gpt4 book ai didi

objective-c - respondsToSelector 和 class_getInstanceMethod

转载 作者:行者123 更新时间:2023-12-02 22:07:08 29 4
gpt4 key购买 nike

在内部,respondsToSelector 是否不仅仅是找出 class_getInstanceMethod 是否返回非零值?

respondsToSelector 本质上是 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);
}

class_respondsToSelector() 依次位于 objc-class.mm 的第 729 行:

BOOL class_respondsToSelector(Class cls, SEL sel)
{
IMP imp;

if (!sel || !cls) return NO;

// Avoids +initialize because it historically did so.
// We're not returning a callable IMP anyway.
imp = lookUpMethod(cls, sel, NO/*initialize*/, YES/*cache*/, nil);
return (imp != (IMP)_objc_msgForward_internal) ? YES : NO;
}

关于objective-c - respondsToSelector 和 class_getInstanceMethod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15933762/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com