2011-10-21 6 views
1

Playerインスタンスがあり、iOSアプリケーションのスコア表示を更新できるように、オブザーバーをスコアに追加したいとします。しかし、NSObjectオブザーバをどのようにデバッグできますか?

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context 

:私は、このメッセージを受け取るべき定義されたメソッドを持って、同じクラスで

[[self.game player] addObserver:self 
        forKeyPath:@"score" 
         options:NSKeyValueObservingOptionNew 
         context:nil]; 

:私はオブザーバーを追加するには、このように見えるメソッドを呼び出すべきであると考えています私がこのメソッドに置いたブレークポイントは決して打撃を受けません。

この問題を診断する方法を知りたいと思います。私は、プレーヤーインスタンスが満たされていることを確認しました。スコアが更新されると、同じインスタンスが更新されます。

私のプロジェクトをARCに変換したばかりですが、上記のコードは新しく、一度も働いたことがありません。

答えて

1

キーパス "score"はKVOに準拠していません(*スコアのための@propertyを定義していませんか?)か、オブザーバーメソッドの追加は決して呼び出されません。後者を簡単に診断するには、最初のスニペットのコード行にブレークポイントを置き、実際にオブザーバが登録されていることを確認します。

+0

私は[[self.game player] valueForKey:@ "score"]と呼んでいたので、結果的にnilが返されたので、私のアプリケーションに何か間違っていると推測しています。私はちょうど無駄だと思うあなたの時間をありがとう。 –

+0

OK、didFinishLaunchingWithOptionsの前にviewDidLoadが実行されることが分かりました。その時点では利用できなかったものに頼っていました。とにかく、いくつかの評判があります。 –