PerformSelector가 잘못된 인수를 던지고, 왜?
-
21-12-2019 - |
문제
이 코드 줄은 완벽하게 작동합니다
[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
메서드가 인수가 있으므로 :
제휴하지 않습니다 StackOverflow