SORU
3 EYLÜL 2011, CUMARTESİ


Ö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
3 EYLÜL 2011, CUMARTESİ


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)
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • khloe brooks

    khloe brooks

    25 Temmuz 2011
  • Pepsi

    Pepsi

    1 Kasım 2005
  • TheXiaxue

    TheXiaxue

    3 AĞUSTOS 2009