2011-10-21 4 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

키 경로 "점수"가 KVO와 호환되지 않습니다 (* 점수에 대해 @ 속성을 정의하지 않습니까?) 또는 관찰자 방법의 추가가 절대 호출되지 않습니다. 첫 번째 스 니펫의 코드 줄에 중단 점을 배치하고 관찰자가 실제로 등록되었는지 확인하여 후자를 쉽게 진단 할 수 있습니다.

+0

저는 [[self.game player] valueForKey : @ "score"]라고 불렀습니다. 결과적으로 nil이 반환되었으므로 다른 응용 프로그램에 문제가 있다고 생각합니다. 내가 방금 낭비했다고 생각하는 시간을 가져 주셔서 감사합니다. –

+0

좋아요, didFinishLaunchingWithOptions 전에 viewDidLoad가 실행되는 것으로 밝혀 졌기 때문에 당시에는 사용할 수 없었던 것에 의존하고있었습니다. 어쨌든 몇 가지 명성을 얻으십시오. –

관련 문제