创建新类
添加方法
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
手机扫一扫
移动阅读更方便
你可能感兴趣的文章