PerformSelector 抛出无效参数,为什么?
-
21-12-2019 - |
题
这行代码完美运行
[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
有一个参数,所以你必须指定 :
不隶属于 StackOverflow