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

  • 相关阅读:
    面试题:最小的K个数
    面试题:反转链表
    面试题:二进制中1的个数
    数据结构之二叉树
    Serializable-源码分析
    归并、希尔、快速排序
    栈与队列
    简单排序(冒泡、选择、插入)
    Shiro 框架认证和授权
    mybatis select查询使用返回结果为resultMap
  • 原文地址:https://www.cnblogs.com/feng9exe/p/11460994.html
Copyright © 2011-2022 走看看