zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    COM编程-注册DLL形式的COM服务器
    控制台console使用MFC库函数,Cout输出CString的方法
    [C#]窗体切换--避免开启多个线程
    OpenCV配置使用版
    Dependency Walker使用说明
    TCP粘包和半包的处理方法
    GENERATED_UCLASS_BODY 和 GENERATED_BODY 区别
    c++ 的 坑真多之头文件
    Introduction to replication 翻译
    c++ 的 static_cast
  • 原文地址:https://www.cnblogs.com/feng9exe/p/11460994.html
Copyright © 2011-2022 走看看