performSelector抛出无效的参数,为什么?

时间:2014-01-09 07:37:25

标签: ios objective-c performselector invalidargumentexception

这行代码完美无缺

[self explodeBomb:obj];

但如果我用以下行替换它,我会得到一个NSInvalidArgument异常,原因是无法识别的选择器。

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

该方法的定义如下:

 -(void)explodeBomb:(SKNode *)bomb

我知道,这必须是我不理解一些基本的东西。但是为什么我能够直接调用该方法没有任何问题,但是当我尝试使用performSelector它会爆炸?对于记录,obj被定义为ID。我尝试更改explodeBomb的签名以获取ID,然后在方法中显式地将其强制转换,但是引发了相同的异常。谁知道我做错了什么?

1 个答案:

答案 0 :(得分:3)

使用:并写如下

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

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