2012-10-01 3 views
0

속성이 foo이고 관련 ivar이 _foo이라고 가정합니다. 재정의 된 getter가 다른 선택자를 실행하지 않습니다

나는 다음과 같은 방식으로 foo에 대한 게터를 오버라이드 :

- (fooType*)foo { 
    [_foo bar]; 
    return _foo; 
} 

을하지만 내가 bar에 대한 상징적 중단 점을 설정하면 화재하지 않습니다. 그 이유가 궁금합니다.

+0

당신은 @synthesize foo = _foo가 있고 합성 된 foo를 오버 라이딩했다는 것을 의미합니까? – combinatorial

+0

예 thats correct –

+0

[self foo] 또는 self.foo를 사용하여 foo에 액세스합니까? – Steve

답변

1

foo을 호출하는 개체가 nil이면이 방법을 사용할 수 없습니다. 마찬가지로 _foo이 0이면 bar이되지 않습니다.

foo을 호출하는 곳에서 중단 점을 넣고 호출하는 객체를 살펴보십시오. 그런 다음 foo 호출을 시도 할 수도 있습니다.

+0

그건 문제가되지 않는 것 같습니다. getter가 발생하기 전에 나는 self.foo가 0이 아니라는 것을 확인하기 전에 점검했고 실제로는 그렇지 않습니다. 하지만 getter를 호출하면 아무런 결과도 얻지 못합니다. –

+0

'self.foo'가 nil이 아니거나'_foo'가 nil이 아닌지 확인했는지 확인 하시겠습니까? –

+0

키 초기화 단계가 누락되었습니다. 나는 실제로 _foo가 0이 아님을 확인해야만했습니다. 귀하의 솔루션은 올바른 해결책을 지적했습니다. 감사! –

관련 문제