1

Store Kitを実装しながら良いデザインを考え出そうとしています。

MVCコンベンションに従おうとしていますが、私は次のことを持っています

モデル: Store Observer ビュー: UI (製品の選択など) を表示するいくつかのビュー コントローラー: My View Controller

私のビューコントローラーが製品リクエストのためにストアオブザーバークラスをインスタンス化し、UIを更新する必要があります。これはこれを行う適切な方法ですか?

また、ASYNC であるため、Product Request 呼び出しをどこで行うべきかを判断するのにも苦労しています。そして、製品情報が取得された後に UI を更新する方法 (SetNeedsDisplay を呼び出しますか)

どうもありがとうございました

4

1 に答える 1

2

デリゲートを調べる必要があります。動作するオブジェクトが準拠するデリゲート プロトコルを定義することで、MVC を壊さずに物事を発生させることができます。次に、デリゲート プロトコルで定義されたメソッドを呼び出すことによって、デリゲート メソッドを呼び出すことができます。その効果は、オブジェクトへのポインターを持ち、そのメソッドの 1 つを直接呼び出すようなものですが、同じではありません。オブジェクトはまだ分離されており、プロトコルを定義することで、終了しないようにできることを定義します。クラスが絶望的に​​絡み合っています。

アクションを引き起こすオブジェクト (A と呼びます) は、デリゲート プロパティを定義します。これは、デリゲート プロトコルに準拠するオブジェクト B に設定されます。B は、プロトコルに準拠していることを示すためにヘッダーにデリゲート指定子を含める必要があり、プロトコルで定義されているすべてのメソッドを実装する必要があります (オプションとして定義されているものを除く)。A は、プロトコルがそれらを公開している限り、B のメソッドを呼び出すことができます。A が B へのポインターを持ち、b が A へのポインターを持つことにはなりません。

あなたの場合、コントローラーがストアオブザーバーを作成するように見えます。また、モデルがコントローラーに送り返す必要がある通知のデリゲート メソッドも実装します。モデルのデリゲートはコントローラーに設定され、UI を更新するために、モデルへの変更 (正しくアクセスできるモデル) をコントローラーに通知できます。

于 2009-10-21T02:29:40.447 に答える