OC底层原理 08

2020-09-14  本文已影响0人  花白少年梦

类原理分析

  1. 成员变量与类方法的归属?
    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的区别是啥

上一篇下一篇

猜你喜欢

热点阅读