
iOS 底层知识相关
iOS 底层知识相关
Leonardo_Fibonacci
make it happen make it better
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Block 底层值__Block修饰符
__Block 修饰符Block 想要改变外部的变量,必须要用__Block 来修饰自动变量。根据内存地址可以看出来,__block 所修饰的变量,将外部的变量在栈中的内存地址放到了堆中。 // auto 自动变量的内存分配在栈区域 stack __block int meters = 1000; // 在block 引用之前 0x7ffeefb...原创 2019-07-17 12:04:21 · 238 阅读 · 0 评论 -
Block 底层1
Block本质来讲是OC 对象,其内部有一个isa指针。1 Block 的声明一言以蔽之: returnType ( ^blockName)(parameterTypes) = ^returnType (parameters) {};returnType 返回的类型 可以为Void,为Void的时候可以省略^blockName Block的名字parameterTypes...原创 2019-07-16 18:44:05 · 176 阅读 · 0 评论 -
iOS KVO 的实现原理
KVO 的实现原理一 原理1.KVO是基于runtime机制实现的2.当某个类的属性对象第一次被观察时,系统就会在运行期动态地创建该类的一个派生类,在这个派生类中重写基类中任何被观察属性的setter 方法。派生类在被重写的setter方法内实现真正的通知机制3.如果原类为Dog,那么生成的派生类名为NSKVONotifying_Dog4.每个类对象中都有一个isa指针指向当前类,当一个...原创 2019-07-16 11:07:00 · 414 阅读 · 0 评论 -
OC的分类
OC的分类1 OC 分类作用生命私有的方法分解体积庞大的类文件把Framework的私有方法公开2 分类的特点运行时决议可以为系统添加分类3 分类可以添加哪些内容实例方法类方法协议属性分类会被编译成一个结构体struct category_t { const char *name; ...原创 2019-07-13 11:18:07 · 648 阅读 · 0 评论 -
OC的对象的分类
OC的对象分类一 oc的对象分类主要分为3种1 instance 对象:实例对象就是通过alloc 出来的对象,一个类每一次的alloc都会产生一个新的实例对象 StudentA *a = [[StudentA alloc]init]; StudentA *b = [[StudentA alloc]init]; // 打印结果如下 地址是明显不同的 ...原创 2019-07-11 10:42:25 · 268 阅读 · 0 评论 -
iOS NSObject对象内存大小
NSObject内存大小类的本质是结构体 无须赘述struct NSObject {Class isa; };一个类对象的实例大小是8个字节之所以打印出的16个字节,是因为一个NSObject 最小开辟16个字节 NSObject *obj = [[NSObject alloc]init]; // class_getInstanceSize 这是runtime 获...原创 2019-07-10 18:11:45 · 1132 阅读 · 0 评论