类原理分析
- 成员变量与类方法的归属?
2.成员变量与属性的区别&周边拓展补充
3.machoView辅助分析
4.类方法的存储
属性和成员变量?
为什么copy与strong有区别?
实例变量?
实例变量:特殊的成员变量(类的实例化)
因为ro是只读 编译期生成的
方法: sel imp函数指针
imp 函数指针:指向函数的实现
Type Encoding
@encode(char)
@16@0:8 (void16idSel8)
@返回值
16: 总字节数
@:Id id self,SEL _cmd
0:从0开始
:从当前位置
8:往后数8位字节
@ id类型
copy & strong & weak 区别
setProperty
1:LLVM ivar - 编码处理
就是把指针偏移到name的位置去 然后把这个value存进去
什么是ivar?
记住copy、strong、weak底层调用的那个方法,然后通过LLVM找
LLDB: image list读取整个镜像文件
0x20 = 32
Machoview使用介绍
method_list_t
类方法归属?
通过元类取出类方法。
因为类对象是元类的对象,所以类方法存在于类对象里面
存类的ivars里? 什么存类的ivars里?
得到一个类方法相当于得到一个元类的实例化方法
元类为什么有sayHappy 类方法 0 1,当找到后不在递归,直接出去
实例方法存在类里,类方法存在元类里
解答
@interface LGPerson: NSObject
{
成员变量
NSObject *objc; //objc 成员变量 - 实例变量
NSString *nickName; //nickName 成员变量
}
实例变量是某个类的实例的意思 成员变量包含实例变量 它还可以是其它的类型
isa走向:继承才有父子关系,元类才有isa
copy和strong,assign的区别是啥