这行代码完美地工作

[self explodeBomb:obj];


但是如果将其替换为以下行,则会收到NSInvalidArgument异常,原因是无法识别的选择器。

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


该方法的定义如下:

 -(void)explodeBomb:(SKNode *)bomb


我知道,这必须是我不了解基本知识。但是,为什么我可以毫无问题地直接调用该方法,但是当我尝试使用performSelector时,它会崩溃吗?对于记录,obj被定义为ID。我尝试更改explodeBomb的签名以获取ID,然后将其显式转换为方法内部,但这引发了相同的异常。有人知道我到底在做什么错吗?

最佳答案

使用:并像下面这样写

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


由于您的方法explodeBomb有一个参数,因此您必须指定:

关于ios - performSelector抛出无效参数,为什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21014239/

10-12 14:32