在浏览 Apache Cordova 的源代码时,我遇到了两行令我感到困惑的代码:
//[obj performSelector:normalSelector withObject:command];
objc_msgSend(obj,normalSelector,command);
从Apple的文档来看,这两种方法似乎没有太大区别。
id objc_msgSend(id theReceiver, SEL theSelector, ...) 将带有简单返回值的消息发送到类的实例。
- (id)performSelector:(SEL)aSelectorwithObject:(id)anObject 以对象作为参数向接收者发送消息。(必需的)
这两种方法究竟有什么区别?在上述情况下,两者都将带有对象作为参数的消息发送给接收对象。