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

  • 相关阅读:
    常用的公共 DNS 服务器 IP 地址
    组网参考资料
    华为交换机配置telnet、SSH
    华为三层交换+双链路出口
    ACL流策略
    MacBook苹果电脑绕过BootCamp安装Win7双系统
    nslookup
    熟悉Linux操作系统的命令接口、图形接口和程序接口
    “发现一个错误”——laravel开发
    document.forms用法示例介绍
  • 原文地址:https://www.cnblogs.com/feng9exe/p/11460994.html
Copyright © 2011-2022 走看看