美文网首页
一. 与运行时(Runtime)的交互--运用runtime的方

一. 与运行时(Runtime)的交互--运用runtime的方

作者: 烟影很美 | 来源:发表于2016-02-03 16:34 被阅读40次

    1.Objective-C源代码

    很多时候, 我们只要编写OC源代码就在不知不觉中使用了运行时. 如OC的消息机制, 就是在运行时转化为C函数并且动态地查找调用需要的方法实现.

    2.NSObject 的方法

    如以下方法NSObject自省方法,同样也需要在运行时通过isa指针获取对象的各种信息.

    - (BOOL)isKindOfClass:(Class)aClass;

    - (BOOL)isMemberOfClass:(Class)aClass;

    - (BOOL)conformsToProtocol:(Protocol *)aProtocol;

    - (BOOL)respondsToSelector:(SEL)aSelector;

    3.运行时函数

    如以下函数(位于objc/runtime.h):

    const char *object_getClassName(id obj)

    void *object_getIndexedIvars(id obj)

    其实和2中的方法并没有本质的区别, 只是可能因为那些方法更常用而将运行时函数封装为OC方法.(猜测)

    注:在很多人眼中, 那些Runtime函数和我们平常使用的方法没有任何区别, 因为我们并不能看到OC的动态调用. OC是对C语言的扩充, 而从面向过程到面向对象的转变的关键就在Runtime,通过动态调用实现了类的继承. 所以只要我们使用OC的继承,就会间接使用Runtime. 在新手眼中, Runtime是类似CFNetwork/RN/各种SDK等 这种需要我们熟悉用法的暗物质. 而事实上Runtime是OC面向对象特性的基础.

    参考资料:


    Interacting with the Runtime

    相关文章

      网友评论

          本文标题:一. 与运行时(Runtime)的交互--运用runtime的方

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