2011-10-23 15 views
-1

異なるオブジェクト内でインスタンス化されたメッセージングオブジェクトに関するクエリがあります。 具体的には、私の 'gamestate'オブジェクトを私の 'GLview Object'から分離し、他のオブジェクトの中から各オブジェクトに属するメソッドを呼び出すことができます。 これを達成する最良の方法は何ですか?目的C - オブジェクト内のメッセージングオブジェクト

ありがとうございます;)

答えて

1

これを達成する方法はいくつかあります。

もっとも明白なのは、スーパークラスがプロパティ(サブオブジェクト)を参照するプロパティで定義できることです。例えば、[[gamestate subObject] doSomething]、ここで 'subObject'は、メッセージを表示するオブジェクトを指し示す合成プロパティです。

疎結合が必要な場合は、委任のパターンを使用するか、通知に登録することを検討してください。

ネストされたオブジェクトは、デリゲートプロトコルを定義し、適切な時にデリゲートメソッドを呼び出します。別のオブジェクトがプロトコルに準拠し、代理人として割り当てられている場合は、メッセージを受信します。

最後に、オブジェクトは通知のために登録できます。オブジェクトAは通知を送信することができます(「何か起こった」など)。オブジェクトBは通知のために登録できます(「何か起こったことが通知されたときにメソッドXを実行します)。

+0

ありがとうございましたisaac、働いてください。オブジェクトの外部でインスタンス変数にアクセスできるように、プロパティ参照を作成しました。私はglViewポインタのコピーを取得し、これをレンダリングオブジェクトに渡しました。通知の登録も有望ですが、それをチェックします!再度、感謝します。 – eJm

+0

私は不思議ですが、現在のインスタンスの外にあるオブジェクトにメッセージを送信する適切な方法をポインタに渡していますか?私は、タッチ入力をGLviewの中に入れておけば、うまくいくようなタッチ入力に関する問題に遭遇しました。 – eJm

+0

はい。ポインタを渡す。 – isaac