1 つのアーキテクチャ上の問題を解決しようとしていますが、最適なアプローチを見つけたいと考えています。
この場合の私のビューであるゲーム シーン GameLayer.h があります。コントローラーにしようとしている GameEngine クラスもあります。CCNode から派生したカスタム Egg クラスと、Egg クラスのスケジュールを介して実装されたいくつかのタイマー ロジックがあります。addChild メソッドを使用してゲーム シーンに多数の Egg オブジェクトを追加しました。したがって、GameEngine.m は GameLayer.h をインポートし、GameLayer.m は Egg.h をインポートします。
各エッグのタイマーが切れた後、通知を受け取りたいです。つまり、いくつかのアクションを実行したり、スコアを増やしたりします。質問は、そのような状況を実装するための最良の方法は何ですか. また、MVCルールに従いたい私の頭に浮かぶクイックソリューションは
- Egg クラスに Gamelayer.h をインクルードし、その中で更新メソッドを呼び出します。ビュー (自己) を更新し、GameEngine に通知して新しいスコアを保存します。
- Egg クラスに Gamelayer.h をインクルードし、その中で更新メソッドを呼び出します。update メソッドで、GameEngine.h にある別の update メソッドを呼び出し、GameEngine の保存スコアから取得し、Gamelayer (ビュー) を更新します。
- KVO を実装します。問題は、私が以前にそれをやったことがないことです。オブザーバーが GameLayer または GameEngine であるべきかわかりません
助けてください、どんな例でも大歓迎です