对象结构模型
1.对象在内存中是一个结构体,无法动态改变大小,无法动态增加成员变量。
结构体中的 对象方法列表 methodLists 是一个指针,它可以动态增加方法,
可以想下Category动态扩展方法的原理了。
注:可以通过objc_setAssociatedObject、objc_getAssociatedObject 来动态添加成员变量,但是没有真正改变对象的内存结构。
动态创建对象
1. import runtime.h
2. 使用 objc_allocateClassPair 方法创建新类
3. 使用 class_addMethod 方法添加新方法
4. 使用 objc_registerClassPair 注册新类
5. 使用 object_getClass 获得isa指针指向的对象
动态替换对象
1.class_replaceMethod 替换类方法,如果没有原方法,会使用替换的方法
2.method_exchangeImplementations 交互2个方法的实现
3.method_setImplementation 设置方法的实现
总结
你的app 在ios6.1 下有系统函数bug,你可以使用替换方法来解决。
网友评论