귀하의 _delegate가 현재 임의의 쓰레기 값이 아닌 것은 확실합니까?
if ([_delegate respondsToSelector:@selector(onScoresSubmitted:)])
콜백을 사용하는 클라이언트 (위임자)가 콜백이 더 이상 수행되지 않도록 서버 위임을 정리해야합니다.
- A : :
이
두 가지 방법으로 수행 할 수있는 대리자의 유지하려면 단절 측에서 확인 (하지만 더 이상 위임 관계가 아니다).
- B : 위임자 클라이언트 이 더 이상 서비스를 필요로하지 않을 때 위임자 포인터에 nil을 할당합니다. 때문에 나쁜 구현 다음은 일반적인 오류
: 문제는이 유사하지 않은 경우
ADelegateClient* client = [ADelegateClient new];
[SingletonService service].delegate = (id<SingletonServiceDelegate>)client;
[client release];
// you must [SingletonService service].delegate = nil; Since
// [SingletonService service] cannot know the delegate is not pointing to something valid anymore
[[SingletonService service] makeStuffWillCauseCallBackToDelegate];
그때 내가 깊은 더 보면, 레이 코드를 읽을하지 않았다. 하지만 99 %는 할당 된 포인터 문제와 관련이 있다고 확신합니다.
또한이 튜토리얼의 공식 포럼 스레드에 게시하는 것도 고려해 볼 수 있습니다. http://www.raywenderlich.com/forums//viewtopic.php?f=20&t=5167 – Luke