我们在Xcode中使用objc写代码的时候往往会碰到动态调用方法的时候.
如果是静态调用这很常见,不会有任何问题:
[self performSelector:@selector(method)];
但如果method是运行时变化的值,则编译器就会发出警告:
简单来说,这是因为编译器在开启ARC后不知道该方法的返回值是什么,该如何处理,是标记为ns_returns_retained还是ns_returns_autoreleased.
在网上搜了一下有几种办法可以解决,首先如果动态调用的方法不返回值,则可以使用afterDelay来消除警告:
[_gameScene.curMapNode performSelector:NSSelectorFromString(selectorName) withObject:nil afterDelay:0]