2014-10-14 2 views
0

메서드를 호출하는 동안 문제가 발생했습니다. 어떻게 알 수 있습니까? 기본적으로 기본 메뉴에서 자습서 파트를 보여주는 SKNode를 호출하려고합니다. 코드는 다음과 같다 :메서드 호출 중 홀수 오류 (UITextSelectionView)?

[UITextSelectionView name]: unrecognized selector sent to instance 0x1576e6c0 2014-10-14 11:01:19.430
[406:130379] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITextSelectionView name]: unrecognized selector sent to instance 0x1576e6c0'

이상한 일이 있다는 것입니다 방법 didMoveToView:는 (심지어 runTutorialWithStep:에 대한 3 초 대기 전에)라고

- (void)didMoveToView:(SKView *)view 
{ 
    ... 

    if ([[GameData sharedData] openingTutorial]) { // Checks if the menu needs the tutorial 
     [_tutorialObj performSelector:@selector(runTutorialWithStep:) 
          withObject:[NSNumber numberWithInt:8] 
          afterDelay:3.0 
     ]; 
    } 
} 

,이 오류가 발생했습니다 이전 강의에서 나는 didMoveToView:에서 동일한 자습서의 동작을 사용하며 올바르게 작동합니다. 하지만 ...

여기 더 이상한 일이 있습니다 !!!

이 호출에 대해 나는 중간 방법을 사용하는 경우 :

- (void)didMoveToView:(SKView *)view 
{ 
    ... 

    [self performSelector:@selector(intermediaryMethod) 
       withObject:nil 
       afterDelay:3.0 
    ]; 
} 

- (void)intermediaryMethod 
{ 
    [_tutorialObj performSelector:@selector(runTutorialWithStep:) 
         withObject:[NSNumber numberWithInt:8] 
         afterDelay:0.0 
    ]; 
} 

모든 것이 문제없이 작동합니다. 나는 문제를 피하고 싶지만 이것을 해결하고 싶지 않다. 조언?

답변

0

좋아, 문제를 해결했습니다.

모든 예외에 대한 중단 점을 추가하고 그 문제가 다른 클래스 (UITextView가있는 유일한 클래스) 때문이라는 것을 깨달았습니다. 기본적으로 나는 더 이상 필요하지 않으면 부모 ([self removeFromParent])에서 텍스트 필드를 내 자신에 의해 제거했습니다.

프로그램이 UITextView를 찾을 수 없기 때문에 할당 해제 중에 오류가 발생했다고 가정합니다. 나는이 진술을 제거 할 수 있었고 모든 것이 올바르게 작동했다.

[_tutorialObj runTutorialWithStep:] 메서드를 호출하는 경우에만이 예외가 throw되는 이유를 이해할 수 없기 때문에 실제로 의심이 있습니다.

1

오류가이 모든 것을 말합니다. 그것을 구현하지 않는 객체에 'name'메시지를 보내려고합니다 (UITextSelectionView). 두 번째 조치가 취해지면 그 원인은

[[GameData sharedData] openingTutorial] 

메쏘드 또는 그 이전에 발생합니다. 'name'을 호출하는 객체를 검색하고 문제의 UITextSelectionView인지 확인합니다.

일반 뷰 객체에 대한 약한 참조가 있고 runTutorialWithStep을 호출하기 전에 3 초 동안 '이름'메시지를 구현하는 객체에 해당 객체를 재 할당합니다.

+0

확인해달라고 요청한 코드 부분을 테스트하려고했지만 문제가 없습니다. 만약 내가 시도 :'([GameData sharedData] openingTutorial]) NSLog (@ "DEBUG");'모든 작품! 어쨌든,이 메서드에서는 심지어 UITextSelectionView를 사용하지 않았다! – user3582537

0

해결 방법을 찾았습니다.

관련 문제