与IMP和@selector相关



我一直在寻找与IMP相关的信息,但我发现的一切看起来都像是旧做法。

我可能错了,但IMP代表一个方法的地址,所以如果需要的话,你可以把它作为参数传递,对吧?如果这是真的,@selector不允许这样做吗?

如果有人能向我解释一下我会很感激,因为我真的很失落。如果能为我提供一些关于使用IMP和@selector的信息,那就太好了。

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

目标C中的[NSObject alloc]在C:中是这样的

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

在内部,objc_msgSend将使用提供的ClassSEL,并使用类似class_getMethodImplementation的东西来调用IMP

通常最好使用Method等更高级别的接口以及NSSelectorFromStringNSClassFromString等函数来处理运行时。

相关内容

  • 没有找到相关文章

最新更新