【发布时间】:2013-04-10 18:37:39
【问题描述】:
在内部,respondsToSelector 所做的不仅仅是找出class_getInstanceMethod 是否返回非零吗?
responsToSelector 本质上是 class_getInstanceMethod 的包装器吗?像这样:
- (BOOL)respondsToSelector:(SEL)sel {
return class_getInstanceMethod(self, sel) != nil;
}
【问题讨论】:
-
在苹果的开源 NSObject implementation 中,
respondsToSelector:在第 1472 行,看起来像这样:- (BOOL)respondsToSelector:(SEL)sel { if (!sel) return NO; return class_respondsToSelector([self class], sel); } -
乔希,这太棒了 - 来源。
-
为了在@JoshCaswell 评论上更进一步,实际实现在objc-class.mm 和
class_respondsToSelector@ 729 行结束,它调用lookUpMethod@916 行,这是一个很好的99 行阅读 -
Paul.s. 1+ 谢谢。
-
@JoshCaswell 你能把你的答案放在底部吗?
标签: objective-c cocoa-touch objective-c-runtime