2011-12-15 16 views
10

Ben UIAlertView ve temsilci clickedButtonAtIndex böyle mi gösteriyorsun örneğine gönderilen -ARC ve UIAlertView: tanınmayan seçici İşte

UIAlertView *alert = 
    [[UIAlertView alloc] initWithTitle: @"title" 
           message: @"message" 
           delegate: self 
        cancelButtonTitle: @"Cancel" 
        otherButtonTitles: @"Continue", nil]; 

    [alert show]; 


- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 
    //something 
} 

Bu kod parçası ARC olmadan mükemmel çalışıyor. Ama ARC ile bu hatayı atar - nedeniyle yakalanmamış istisna 'NSInvalidArgumentException' akıl uygulamayı Sonlandırma: -

temsilci atma nedenine herhangi bir fikir '[__ NSCFType alertView: clickedButtonAtIndex:] tanınmayan seçici örneğine 0x859d790 gönderilen' bu hata?

+1

Temsilci kendisi tahsis ediliyor. Bu nesneyi nasıl yaratıyor ve yönetiyorsunuz? –

+1

@FirozeLafeer - bu kod parçasını çağıran nesne, yani kendini ARC tarafından serbest bıraktı. Ben bir özellik yaptım ve şimdi işe görünüyor. Teşekkürler :) – arank

cevap

13

Temsilciniz dealloc'd'd. Uyarıyı gösteren ve bir şekilde temsilci olarak ayarlanan nesnenin bir şekilde korunduğundan emin olmak için kodunuzu bir kez daha kontrol edin (örneğin: uygulamanızdaki bir öğeye güçlü bir referansı var).

delegate: self cancelButtonTitle: @"No" otherButtonTitles: @"Yes",nil]; // don't forget the nil at the end here! (or it will crash first run)

İlginçtir ki bu uygulamayı çalıştırmak yalnızca ilk kez çöküyor: Son otherButtonTitles parametresinden sonra sonunda nil unutursam Benzer

+0

gerçekten bu benim sorunum oldu, bu anladım sonra bu postcontroller dealloc'd eklenmiş bir yöntem vardı storyboard üzerinde bir düğmeyi kopyaladım çünkü oldu. Bu nedenle, WAS'ın düzgün bir şekilde çağrılıp çalıştırıldığı diğer yöntemim, theclickedButtonAtIndex içindeki görevleri gerçekleştiremedi. Umarım bu birisine yardımcı olur, çözümünüz için teşekkürler! –

+0

Ayrıca, UIAlertView için CocoaPod'ları arayın ve UIAlertView kullanarak basitleştirecek ve görünüm denetleyicilerinizde UIAlertViewDelegate kullanma gereksinimini ortadan kaldıracak bir dizi blok tabanlı eklenti bulacaksınız. –

0

da olabilir. Bundan sonra, sadece iyi çalışır.