Özel dealloc ve ARK (Objective-C)
Küçük iPad uygulamam "dil" gözlemci kullanan işlevi. anahtarı var Her görünüm denetleyicisi viewDidLoad:
sırasında gözlemci ile kaydeder.
- (void)viewDidLoad
{
[super viewDidLoad];
[observer registerObject:self];
}
Kullanıcı vurduğu "dil, yeni dil modelim saklanır ve gözlemci bildirilir ve kayıtlı nesneler üzerinde updateUi:
seçici çağrı butonu" değiştirmek.
Bu çok iyi bir TabBarController görünümü denetleyicileri var ne zaman dışında çalışıyor. Çünkü bu zaman sekme çubuğu yükler getirir sekmesi simgeler onun çocuk denetleyicisi olmadan başlatılıyor görüşlerini, yani viewDidLoad:
değil denir, bu yüzden bu görünümü denetleyicileri yok almak dil değişikliği bildirimleri. Bu nedenle, init
yöntem registerObject:
aramalarıma taşındım.
viewDidLoad:
benim gözlemci ile kaydetmek için kullanılan zaman geri viewDidUnload:
kaydını silmek için kullanılır. Şimdi init
kayıt olduğum için çok fazla anlam ifade dealloc
kaydını yapar.
Ama burada benim sorunum. Ben yazarken:
- (void) dealloc
{
[observer unregisterObject:self];
[super dealloc];
}
Bu hata alıyorum:
ARC açık bir mesaj göndermek yasak'' . dealloc
[super dealloc]
superclasses sağlamak için düzgün temiz aramam gerek, ama ARK bu yasaklar bu yana, şimdi sıkıştım. Benim nesne ölürken bilgi almak için başka bir yol var mı?
CEVAP
ARC kullanırken, sadece [super dealloc]
açıkça arayın derleyici sizin için yönetir Clang LLVM ARC document, chapter 7.1.2 açıklandığı gibi):
- (void) dealloc
{
[observer unregisterObject:self];
// [super dealloc]; //(provided by the compiler)
}
atma, özel bir durum objective-c/cocoa...
Objective c içinde Özel bir biçim dize...
Neden'Objective-C t özel yöntemle...
Nasıl Objective-C özel temsilciler kul...
En iyi şekilde Objective-C sınıfı için...