2011-06-30 10 views
0

私は連絡先のリストを格納するコントローラクラスを持っています。このリストを、そのような配列にKVOを実装するオブジェクトに共有する必要があります。NSArrayインスタンスをKVOオブジェクトに共有する

最も明白な解決策は、誰もがコントローラの同じインスタンス変数を使用でき、配列の内容を変更することができないように、NSMutableArrayの代わりにNSArrayを使用することです。

ここでは、このリストは3分ごとに変更でき、コントローラーだけがアレイの内容を更新できることをイメージします。

連絡先リストの割り当てを解除して再初期化すると、すべてのKVOオブジェクトが配列への参照を失います。

最後に: NSArray PRO:誰も配列の内容を変更できません。 NSArray CON:コントローラーは、デアロックなしで配列を変更できないため、他のオブジェクトが参照を失いました。

NSMutableArray PRO:コントローラは配列の内容を変更できます。オブジェクトはすべて同じ配列の同じ参照を簡単に共有できます。 NSMutableArray CON:誰でも配列を変更できます。

提案がありますか?

答えて

1

NSArray私の意見では、それは非常に頻繁に更新されていないことを考えれば、

配列を所有して変更するオブジェクトは、NSArray*というプロパティで公開されます。観察者はこの特性を観察する。配列を所有するオブジェクトが再作成するたびに、新しいNSArrayにプロパティが設定され、オブザーバすべてでKVOがトリガされます。

また、プロパティに対してindexed accessor patternsを実装することもできます。

関連する問題