SORU
24 HAZİRAN 2011, Cuma


NSNotification için gözlemci kaldırmak için Nerede?Objective C:

Nesnel bir C sınıfı var. İçinde, init bir yöntem oluşturdum ve bir NSNotification ayarlayın

//Set up NSNotification
[[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(getData)
                                                 name:@"Answer Submitted"
                                               object:nil];

Nerede bu sınıf [[NSNotificationCenter defaultCenter] removeObserver:self] ayarlarım? UIViewController, Eğer sadece nesnel bir c Sınıfı oluşturulmuş, yapılması ne Kadar viewDidUnload yöntemin içine ekleyebilirim?

CEVAP
24 HAZİRAN 2011, Cuma


Genel bir cevap olurdu artık bildirimleri ihtiyaç olarak "en kısa sürede". Bu tabii ki tatmin edici bir cevap değil.

Benim önerim, sen de Ekle bir Ara [notificationCenter removeObserver: self] yöntem dealloc bu dersler, istediğiniz zaman olduğu gibi gözlemci olarak olması için son şans kaydını gözlemci temiz bir şekilde. Bu, ancak, sadece çöker bildirim merkezi ölü nesneleri bildiren nedeniyle karşı sizi koruyacaktır. Nesneleri yine de artık düzgün bildirim işleyebilir bir devlet değildir bildirimleri, karşı kodunuzu korumak edemiyor. Bunun için... yukarıya Bakın.

Edit(beri cevap gibi görünüyor çizmek için daha fazla yorum daha biliyordum) ben beceremedim işte: gerçekten çok güç vermek genel bir tavsiye olarak, ne zaman daha iyi kaldırmak gözlemci gelen bildirim merkezi, çünkü duruma göre değişir:

  • Kullanma durumu (Hangi bildirimleri görülmektedir? Ne zaman göndermek için ne yaparsınız?)
  • Gözlemci uygulanması (Zaman bildirimleri almak için hazır mı? Artık ne zaman hazır olur?)
  • Bu gözlemcinin yaşam süresi (başka bir nesneye bağlı, diyelim ki, bir görünüm veya Görünüm denetleyicisi?) amaçlanan
  • ...

, Aklıma gelen bu: yani, app korumak için. en azından bir olası arızalara karşı, bu temiz bir şekilde yapabileceğiniz son nokta (nesne hayatında), beri dealloc removeObserver: dansı yap. Bu ne demek değildir: "sadece dealloc denir, ve her şey yoluna girecek kadar erteleme kaldırma". Bunun yerine, gözlemci çıkarınnesne artık Hazır (veya gerekli) bildirimleri almak için en kısa sürede. Tam doğru zaman. Ne yazık ki, bu soru, yukarıda bahsedilen cevaplarını bilmek değil, o anı olacağını tahmin bile edemiyorum.

Her zaman güvenli bir şekilde 10 ** Bir çok kez (ama belirli bir gözlemci ile İlk Çağrı nops) itiraz edebilirsiniz. Bu yüzden: dealloc sadece emin, ama her şeyden önce olması için bunu düşünür (tekrar): uygun an kullanma durumu tarafından belirlenir () yap.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Apple

    Apple

    22 HAZİRAN 2005
  • EmmightySofia

    EmmightySofi

    25 EYLÜL 2011
  • Nightmare2005

    Nightmare200

    14 Ocak 2007