1. 一个NSobjc 占用多少内存空间?
答案是 16 字节
过程
@autoreleasepool {
NSObjc *objc = [[nsobjc allock]init];
//获取obcj的实例对象的成员变量占用的内存大小 >>> 8
nslog(@"%@",class_getInstanceSize(NSobjc calss));
//获取ocjc指针所指向的内存大小的 >>> 16
nslog(@"%@", malloc_size(__bridge const void *)objc);
}
lldb po objc
lldb memory read objc
lldb x/3xg
**LLDB 常用指令 **
print , p :打印 po :打印对象
内存读取 memory read/数量格式/字节数/内存地址 x/数量格式/字节数/内存地址
x/3xw 0x10010
修改内存地址 中的值
memory write 内存地址 数值 memory write 0x100100 10
格式
x : 是16进制 f 浮点 d 是10进制
字节大小
b :byte 1 字节 h : hafe word 2字节 w :word 4 字节 g : giant word 8字节
objc 指针指向的是一个结构体 ,类 就是一个 结构体
内存对齐 类结构体最少16字节 word aline 前8个 是ISA 指针 后八位 是自定义变量 结构体的大小必须是最大成员的字节的倍数
类的继承 如果父类 只占用的 12字节 那么剩下的空间 子类继承继续使用 最少 16 字节
类的继承 实际hi在 父类的结构体的地址 增加 自己
@pra
实例对象 里边只有 成员变量
方法的代码是一样的 只存一分 方法 rw_t 里 类对象的方法列表里