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

  • 相关阅读:
    REPL
    java实现指数问题
    java实现指数问题
    java实现串逐位和(C++)
    java实现串逐位和(C++)
    java实现串逐位和(C++)
    java实现串逐位和(C++)
    java实现串逐位和(C++)
    手工日期计算法
    手工日期计算法
  • 原文地址:https://www.cnblogs.com/feng9exe/p/11460994.html
Copyright © 2011-2022 走看看