私の多くではUIViewControllers
、データの状態に基づいて特定のコントロールを更新しています。たとえば、UITableViewController
1つ以上のアイテムがある場合にのみ有効にする必要がある編集ボタンがあるとします。または、追加できるアイテムの数を制限し、それ以外の場合は[追加]ボタンを無効にしたい場合があります。
アイテムを追加または削除する(またはアイテムを追加/削除できるその他のアクションを実行する)たびに、有効化/無効化が必要になる可能性のあるコントロールを更新することを忘れないでください。これはほとんどの場合些細なことですが、快適ではありません。繰り返しが多くupdateControlEnabled
、データに影響を与える可能性のある新しい機能を追加するたびに、呼び出しを(または何でも)追加することを忘れないでください。
そして、NSManagedObjectContextObjectsDidChangeNotificationに気づきました。ドキュメントを読むと、管理対象オブジェクトのコンテキストで何かが変更されるたびに通知を受け取ることができるようです。これは理想的なようですが、いくつか質問があります。
これはNSManagedObjectContextObjectsDidChangeNotificationの適切な使用法ですか?
コントローラがこれらをサブスクライブし、それぞれを解析してUIを更新する必要があるかどうかを確認する場合、パフォーマンスへの影響を予測する必要がありますか?気になることがわかっている変更だけでなく、すべての変更についてuserInfoをチェックします。
- 通知はどこで購読する必要がありますか?私
UIViewController
はコンテキストへの参照を持っていますが、これは役立ちますが、View Controllerが常に1つだけのサブスクリプションを持つように、サブスクライブする場所(loadView?viewDidLoad?init?)がわかりません。 - ビューコントローラは、画面外にあるときも通知を受信して処理し続けます。データモデルが他の場所から影響を受けるため、コントロールを有効または無効にします。これでいい?
他の誰かがこのアプローチを使用しているかどうか、もしそうなら、彼らの経験は何であるか、私はほとんど疑問に思っていると思います。