문제

이 코드 줄은 완벽하게 작동합니다

[self explodeBomb:obj];
.

그러나이를 다음 줄로 교체하면 nsinvalidargument 예외가 발생하여 인식 할 수없는 선택기가되는 이유가 있습니다.

 [self performSelector:@selector(explodeBomb) withObject:obj ];
.

방법의 정의는 다음과 같습니다.

 -(void)explodeBomb:(SKNode *)bomb
.

나는 알고있다, 이것은 나에게 근본적인 것을 이해하지 못해야한다.그러나 왜 문제없이 그 방법을 직접 전화 할 수는 있지만, performSelector를 사용하려고 할 때 불면이 발생합니까?Record OBJ가 ID로 정의됩니다.ID를 사용하여 ID를 취한 다음 메서드 내에서 명시 적으로 캐스팅하는 것을 위해 ExplodeBomb의 서명을 변경하려고했습니다.누구든지 내가 뭘 잘못하고 있는지 알지?

도움이 되었습니까?

해결책

:를 사용하고 아래에서 아래로 쓰십시오

 [self performSelector:@selector(explodeBomb:) withObject:obj ];
.

explodeBomb 메서드가 인수가 있으므로 :

를 지정해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top