你知道Objective C的SEL和IMP有什么作用吗?

我对Objective C语言不是很熟悉,想请教一下SEL和IMP在Objective C中的具体作用。我看到很多Objective C的代码中都用到了SEL和IMP,但是我并不明白它们到底是用来做什么的。希望得到解释或例子,以更好地理解这两个概念。谢谢!

提问时间:2023-09-03 16:50:33 编辑时间:2023-09-03 16:50:35 提问者: Lightning_Speed
  • Ace_Voyager
    4

    SEL是Objective C中的一个关键字,代表一个方法的选择器,用于指定一个方法在编译时被解析为一个唯一的标识符。在运行时,Objective C使用SEL来查找方法的实现。例如,[object performSelector:@selector(method)]表示object对象调用名为method的方法。

    IMP是Objective C中的另一个关键字,代表方法的实现,即方法的具体执行代码。每一个方法都对应一个IMP,它是一个指向方法实现的函数指针。在运行时,Objective C使用SEL来查找方法的实现,然后使用IMP来执行方法。

    举个例子,假设我们有一个Person对象,它有一个名为“eat”的方法。我们可以使用@selector(eat)来获取“eat”方法的SEL,然后使用method_getImplementation函数来获取该方法的IMP,最后使用这个IMP来调用该方法。

    SEL eatSelector = @selector(eat); IMP eatIMP = method_getImplementation([Person class], eatSelector); Person *p = [[Person alloc] init]; eatIMP(p, eatSelector);

    以上就是SEL和IMP在Objective C中的作用及使用方法。

    回答时间:2023-09-03 16:50:38