ocRuntime基本功

Posted 刀锋你好,刀锋再见

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ocRuntime基本功相关的知识,希望对你有一定的参考价值。


//所以类都继承于该类
//任何拥有isa指针都可以称为对象
NSObject {
Class _Nonnull isa ; // 结构体指针
}


// 因此 objc_class 也是对象 ,这也就是为什么说类也是对象,具体参加《深入浅出 Cocoa 教程》
struct objc_class {
Class _Nonnull isa OBJC_ISA_AVAILABILITY;

#if !__OBJC2__
Class _Nullable super_class //父类
const char * _Nonnull name //类名
long version OBJC2_UNAVAILABLE;
long info OBJC2_UNAVAILABLE;
long instance_size OBJC2_UNAVAILABLE;
struct objc_ivar_list * _Nullable ivars //变量列表
struct objc_method_list * _Nullable * _Nullable methodLists //方法列表
struct objc_cache * _Nonnull cache //缓存 可以直接无视
struct objc_protocol_list * _Nullable protocols //协议列表 具体遵守哪些协议
#endif

} OBJC2_UNAVAILABLE;

有了这些 我们就可以做很多事情
1. 动态添加属性、修改属性
2. 动态添加方法,修改方法
3. 获取对象属性列表
4. 查询某类是否遵循某一协议
5. 查询某类是否可以执行某一个具体的方法
6. 动态查找其父类 和 静态类

以上是关于ocRuntime基本功的主要内容,如果未能解决你的问题,请参考以下文章

OC category如何注入新的属性(property)

iOS开发-Swift进阶之反射Mirror & 错误处理!

[OC学习笔记]objc_msgSend:方法快速查找

前端基本功:JS(十一)动画封装(CSS样式获取、JSON遍历)

PHP基本功

JS学习基本功