2011-05-10 17 views
0

私はドキュメントベースのアプリケーションで作業しています。NSManagedObjectsが消える

保存されたファイルを開くときに、NSManagedObjectContextをView Controllerにロードします。このビューコントローラは、特定のタイプのすべてのオブジェクトのプロパティ「深度」で変更を監視する必要があります。 View Controllerがコンテキストを取得すると、これらのオブジェクトがすべて取得され、それぞれのオブジェクトのオブザーバとして追加され、追跡される配列に保持されます。

Core DataがContextDidChange通知を送信するたびに、作成したオブジェクトを観測後にこの配列に追加します。削除されたオブジェクトの場合、オブザーバとしてビューコントローラを削除し、そのアレイから削除します。

これは、ドキュメントを閉じてから再度開くまで有効です。この場合、すべてのオブジェクトがこの配列に追加されます。観察はうまくいきます。しかし、2番目の最初の "NSManagedObjectContextObjectsDidChangeNotification"は、私のNSManagedObjectsのすべてが何とか私が設定した配列に何とかなっています。削除すると、私はオブザーバーではないオブザーバーを取り除くことができないと私に言ってクラッシュします。

非常に奇妙です。

NSManagedObjetsが突然消えたのはなぜですか?私は配列をリリースしないか、まったく面白いビジネスをしません。

答えて

0

ドキュメントを閉じてもう一度開くと、新しいView Controllerオブジェクトが取得されます。元のビューコントローラがまだ残っていると、まだ観察のよう
しかし、それが聞こえる:

NSManagedObjectContextObjectsDidChangeNotification. 

チェックは、ビューコントローラが通知オブザーバーとしての地位を削除していることを、あなたの文書を閉じたときにことを確認します。