美文网首页
Objective-C通过函数指针调用方法

Objective-C通过函数指针调用方法

作者: czfeng | 来源:发表于2017-09-18 11:25 被阅读0次

    类中定义的方法通常是以函数形式实现的,但通常在编程的时候并不会直接操作方法对应对函数。

    如果想让程序更快一点,可以通过函数指针的方式调用方法。(提升了速度,但失去了面向对象的动态绑定、多态的特性)

    IMP 类型

    IMP是“implementation”的缩写,是一个函数指针,指向了方法实现代码的入口。

    IMP定义为

    typedef id (*IMP)(id,SEL,..);

    获得函数指针的方法

     -  (IMP)methodForSelector: (SEL) aSelector

    搜索和指定选择器对应的方法,并返回指向方法实现的指针。实例对象和类对象都可以使用这个方法。

     + (IMP)instanceMethodForSelector: (SEL)aSelector

    搜索和指定选择器对应的实例方法,并返回指向方法实现的指针。

    用法

    设有以下一个方法

    - (id)setBox: (id)obj1 title: (id)obj2;

    我们通过以下代码实现调用

    IMP funcp;

    //设foo为实例变量,函数调用方法为[fool setBox:obj1 title:obj2];  ,但下处使用foo的实例方法返回函数指针从而调用函数setBox: title

    funcp = [foo methodForSelector:@selector (setBox:title:)];

    xyz = (*funcp)(foo,@selector(setBox:title:),param1,param2);

    从以上代码可知,通过函数指针调用的方式其实含有两个 隐含参数 。 第一个为self,第二个为选择器(可以通过_cmd变量来访问)。

    内容引自《Objective-C编程全解》- [日]

    相关文章

      网友评论

          本文标题:Objective-C通过函数指针调用方法

          本文链接:https://www.haomeiwen.com/subject/yrwvsxtx.html