1

重複の可能性:
KVO および NSMutableArray

タイトルが示すように、可変配列の変更を検出できる必要があります。この理由は、ユーザーが新しい場所を追加するとすぐに、作成中のアプリのマップビューを自動的に更新するためです。

配列が配列のカウントに1を加えたものか、配列のカウントから1を引いたものかを尋ねるようなものだと思いますが、それを実装する方法がわかりません。

回答する前にさらに情報が必要な場合は、遠慮なくコメントで質問してください。

4

4 に答える 4

2

これには Key-Value Observing を使用できます。詳細については、「Key-Value Observing プログラミング ガイドの紹介」を参照してください。

キー値監視は、他のオブジェクトの特定のプロパティへの変更をオブジェクトに通知できるメカニズムを提供します。これは、アプリケーション内のモデル レイヤーとコントローラー レイヤー間の通信に特に役立ちます。(OS X では、コントローラー レイヤー バインディング テクノロジは、キーと値の監視に大きく依存しています。) 通常、コントローラー オブジェクトはモデル オブジェクトのプロパティを監視し、ビュー オブジェクトはコントローラーを介してモデル オブジェクトのプロパティを監視します。ただし、さらに、モデル オブジェクトは、他のモデル オブジェクトを監視することも (通常は、依存値がいつ変更されるかを判断するため)、またはそれ自体を監視することもできます (依存値がいつ変更されるかを判断するため)。

単純な属性、対 1 関係、対多関係などのプロパティを確認できます。対多関係のオブザーバーは、行われた変更の種類と、変更に関係するオブジェクトを通知されます。

KVO の使用方法については、このブログを参照してください。このチュートリアルもチェックしてください。この質問も確認してください。Key-Value-Cocoa での対多関係の観察

于 2012-12-17T20:28:12.833 に答える
1

この質問には多くの答えがあります。

一般的な方法は、NSNotficationCenterを使用して、モデルが変更されるたびに通知を投稿することです。

オブジェクトが挿入されたとき、またはKey-Value監視時に、委任を使用してメソッドを呼び出すこともできます。

それはあなたのデザインに大きく依存します。指定すれば、もっと具体的な答えが得られるかもしれません。

于 2012-12-17T20:21:30.387 に答える
0

そのためにKVOを使用できます。個人的には NotificationCenter は好きではありませんが、個人的な好みだと思います。

KVO と NSMutableArrayを参照してください

于 2012-12-17T20:28:59.227 に答える
0

さらに別の解決策は、Don't Do That です。可変配列に変更を加えているのであれば、可変配列に変更を加えていることがわかります。そうでない場合は、変更可能な配列を販売しないでください。配列をクラスでラップして、制御するメソッドを介して変更が行われるようにします。

于 2012-12-18T05:04:44.433 に答える