Core Data アプリを作成しており、オブジェクトをビューとマネージャーに渡し始めました。たとえば、私の UIImageView サブクラスは、オブジェクトから画像データを引き出す方法を知っており、画像データがロードされていない場合は、画像を取得、割り当て、使用する方法を知っています。データをサーバーにアップロードするシングルトン マネージャーがあり、それらは管理対象オブジェクトを取得し、アップロードが成功したときにサーバー ID で更新します。
管理対象オブジェクトを削除しているため、これは間違ったアプローチのようです (サーバーは、サーバー側でオブジェクトが削除されたことを通知します)。問題は、ビューとマネージャーの下からオブジェクトが削除される可能性があることです。
いくつかの例: 完了ブロックがまだオブジェクトを保持している場合、削除された管理対象オブジェクトで呼び出されます。ビューが消える前に通知またはユーザー イベントがビューに到達すると、削除されたオブジェクトにもアクセスしようとします。はい、テーブル ビュー/コレクション ビューは、基になるオブジェクトが削除されると (フェッチ述語と一致しなくなると) 関連付けられたビューを更新して削除しますが、まだ完了ブロックがあります。
オブジェクトが削除される場合、このように管理対象オブジェクトを渡すことは安全ですか? これまでのところ、このアプローチは夢のように機能しています。私は、すべてのビューとマネージャーからマネージド オブジェクトを完全に分離する必要があると考え始めています。つまり、コントローラーはオブジェクトをフェッチし、ビュー/セルを作成し、必要なすべてのデータ (デリゲート アクションが発生したときにオブジェクトを参照するための ID を含む) を設定してから、オブジェクトを再びフォールトさせます。ユーザーが何らかの方法でビューを操作するときは、コントローラーにコールバックし、関連付けられたオブジェクトをフェッチして、そのデータを使用する必要があります。管理対象オブジェクトを保持するのをやめるべきですか、それとも .isDeleted を全体的にチェックするクリーンな方法はありますか?