• kvo与runtime


    创建新类

    添加方法

    isa-swizzling

    测试方案:

    添加全局断点

    objc_allocateClassPair

    objc_registerClassPair

    class_addMethod

    libobjc.A.dylib`objc_allocateClassPair

    Foundation`_NSKVONotifyingCreateInfoWithOriginalClass + 138

    Foundation`_NSKeyValueContainerClassGetNotifyingInfo + 59

    Foundation`-[NSKeyValueUnnestedProperty _isaForAutonotifying] + 75

    Foundation`-[NSKeyValueUnnestedProperty isaForAutonotifying] + 82

    Foundation`-[NSObject(NSKeyValueObserverRegistration) _addObserver:forProperty:options:context:] + 490

    Foundation`-[NSObject(NSKeyValueObserverRegistration) addObserver:forKeyPath:options:context:] + 103

    在动态添加类及属性这块,主要用的的 runtime函数是
    1).objc_allocateClassPair—–通过这个函数,可以创建出一个类
    2).class_addIvar—–为该类添加实例变量
    3).sel_registerName—–注册一个 SEL方法
    4).class_addMethod—–为创建的类动态添加方法
    5).objc_registerClassPair—–为创建的类进行注册
    6).class_getInstanceVariable—–获取类中的实例变量
    7).object_setIvar—–为对象中的变量赋值
    8).objc_disposeClassPair—–销毁创建出来的类
    ————————————————
    版权声明:本文为CSDN博主「CINNS」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/nvlangxin/article/details/51610818

  • 相关阅读:
    npm、webpack、vue-cli 快速上手版
    jquery 显示和隐藏的三种方式
    jquery好友面板切换
    jquery 事件冒泡
    jquery QQ微博
    C# Thread 参数
    WPF Dispatcher的使用
    UVa 1600 Patrol Robot (BFS最短路 && 略不一样的vis标记)
    HDU 2795 Billboard (线段树单点更新 && 求区间最值位置)
    HDU 1394 Minimum Inversion Number (树状数组 && 规律 && 逆序数)
  • 原文地址:https://www.cnblogs.com/feng9exe/p/11460994.html
Copyright © 2020-2023  润新知