2011-10-20 15 views
7

Anahtar değer gözetimi kullanıyorum. Object_1 (NSManagedObject) ve diğer birkaç nesne gözlemcim var. Object_1 öğesini yönetilen nesne bağlamından kaldırdığımda programım çöküyor.KVO: Tüm gözlemcileri beton nesnesinden kaldırabilir miyim

CoreData: error: Ciddi uygulama hatası. Çekirdek Veri değişimi işlemi sırasında istisna yakalandı. Bu genellikle bir NSManagedObjectContextObjectsDidChangeNotification gözlemcisi içinde bir hatadır.

Tüm object1 nesnelerini kaldırmak için dealloc yöntemine (veya başka bir yere) bir şey koyabilir miyim? Ya da tek uygun karar, object_1 öğesini yönetilen nesne bağlamından kaldırmak üzereyken bildirim gönderebilmem ve bu bildirimi diğer nesnelerle (object_1 gözlemcilerinden kaldırmak için) dinlemek?

cevap

7

Nesnenin ayrılmadan önce gözlemcilerinizin çıkarıldığından emin olmanız gerekir. Bu, Key Value Observer'ın bir dezavantajıdır.

Önerdiğiniz gibi, bunu yapmanın bir yolu, dealloc yönteminizin içinden tetiklenen kaldırma işlemidir. Açıkçası, sizin nesnenizde gözlemcilerin kim olduğunu bilmiyorsunuz ama yine de onları bilgilendirmek zorunda kalacaksınız.

Yapmanız gerekeni açıkladım ama belki de When should I remove observers? Error about deallocating objects before removing observers numaralı sorudaki bj-homer yanıtına bakın.

Eğer peşindeyseniz, o zaman oraya oy verin. Değilse, oylamayı reddedin. Umarım yine de yardımcı olur.

İlgili konular