0

我正在查找与 IMP 相关的信息,但我发现的所有内容看起来都像是一种古老的做法。

我可能错了,但 IMP 表示方法的地址,因此您可以根据需要将其作为参数传递,对吗?如果这是真的,@selector 是否允许这样做?

如果有人可以向我解释这一点,我将不胜感激,因为我真的迷路了。如果能提供一些关于使用 IMP 和@selector 的信息,那就太好了。

4

1 回答 1

1

@selector解析为SEL可用于查找IMP. 正如您所猜测的,anIMP指向函数的实现,也称为函数指针。

在目标 C 中看起来像这样[NSObject alloc]在 C 中看起来像这样:

objc_msgSend(objc_getClass("NSObject"),sel_getUid("alloc"))

在内部,objc_msgSend将采用提供的ClassSEL使用类似的东西class_getMethodImplementationIMP调用。

通常最好使用更高级别的接口,如Method和函数NSSelectorFromString,并NSClassFromString处理运行时。

于 2013-06-21T05:56:33.630 回答