我有一种情况,我需要调用对象不一定支持的方法,但同时我不能使用 performSelector,因为它限制了你可以传递给方法的参数类型。因此我这样做:
if ([someObject respondsToSelector:@selector(someMethod)])
[(id)someObject someMethod];
编译器很高兴,我很高兴,但是这种消息发送方法有什么注意事项吗?
performSelector 的同步版本和上面的本质区别是什么?
编辑:与 (id) 方法相比, performSelector 是否存在性能损失?