iOS 底层学习
文章平均质量分 54
Leonardo_Fibonacci
make it happen make it better
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
9 OC 中的isa 指针
一 isa 指针isa 指针 ,OC 中的对象都是有的如下图所示,实例对象isa 指针指向 类对象,类对象的isa 指针指向 元类对象二 类对象中的superclasssuperclass 有什么用呢?比如说创建一个Person 类,然后再去创建一个Student类去继承Person类,那么student 和 person 之间就是通过这个superclass 来进行关联的.所以,当方法调用的时候,比如说student 去调用person 中的方法,就是这个场景,..原创 2021-03-20 12:11:18 · 235 阅读 · 0 评论 -
8 iOS中KVO 的本质
前言本质Automatic key-value observing is implemented using a technique called isa-swizzling这计划的意思就是自动的键值观察的实现基于 isa-swizzling原理1.KVO是基于runtime机制实现的2.当某个类的属性对象第一次被观察时,系统就会在运行期动态地创建该类的一个派生类,在这个派生类中重写基类中任何被观察属性的setter 方法。派生类在被重写的setter方...原创 2021-03-20 12:08:25 · 188 阅读 · 0 评论 -
7 OC 中class 类的结构
一 isa 的细节问题实例对象的isa 指向 class,那么isa 中存在的地址值是否就是class 的地址值呢?其实在64位以前,确确实实isa的中存在的地址值就是class的地址值,但是在64位以后,要进行一次与运算,才能获取class 的地址值但是superclass 指针是不存在这个问题的...原创 2021-03-20 09:55:26 · 234 阅读 · 0 评论 -
6 OC中 isa 和 superclass 的总结
一 关于isa 和 superclass 的总结总结如下:instance 的isa 指向是class class 的isa 指向是metaclass metaclass 的isa指向是基类的imetaclass class 的superclass 指向的是父类的class class如果没有父类,superclass 指向的是nil metaclass 的superclass 指向的是父类的metaclass 基类的metaclass 的superclass 指向的是基类的..原创 2021-03-16 13:19:09 · 361 阅读 · 0 评论 -
5 OC 中的三种对象
OC 中对象的分类instance 对象类对象元类对象一 instance 对象内存中包含哪些信息isa 指针 其他成员的变量 Student *stu1 = [[Student alloc]init];以上的stu1 就是实例对象二 类对象以下就是类对象 Class cls1 = [stu1 class]; Class cls2 = objc_getClass(stu1); Class...原创 2021-03-14 16:14:42 · 218 阅读 · 0 评论 -
4 OC 中的内存分配以及内存对齐
一 OC 中的内存分配student 结构体明明是20?为什么是24个字节,因为结构体会按照本身成员变量最大的内存进行对齐,最大成员变量是8个字节,因此就是8的倍数,24个字节。class_getInstanceSize 返回的是该类内存对齐之后的成员变量的内存空间,你需要多少,计算多少。malloc_size 是实际系统分配的内存空间#import <Foundation/Foundation.h>#import <objc/runti...原创 2021-03-14 15:31:18 · 435 阅读 · 0 评论 -
3 OC 属性和方法
1 OC 的属性的生成@interface Student:NSObject{ @public int _no; int _age; }@property (nonatomic,assign)int height;@end当我们使用property 的时候,那么系统会自动的在其内部生成个属性xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc main.m -o main.cpp然...原创 2021-03-14 09:21:53 · 640 阅读 · 3 评论 -
2 OC 对象的本质(一个Student 占用的内存大小)
一 Student 占用的内存空间内存对齐的规则:结构体的内存大小必须是最大成员变量的内存的倍数。一个 Student 类,继承自NSObject,有两个属性,首先要知道,int 类型占用的字节是4个字节 以下打印结果都是16 ,一个int 类型的成员变量占用4个字节,两个占用8个字节,加上父类的isa 指针,一共16个字节#import <Foundation/Foundation.h>#import <objc/runtime.h>#...原创 2021-03-13 20:33:29 · 497 阅读 · 0 评论 -
1 OC 对象的本质(一个NSObject 对象占用的内存大小)
一 本质OC 的面向对象都是基于C/C++ 的数据结构实现的1 OC 的对象和类主要是基于C/C++ 什么数据结构实现的?结构体2 clang 命令转换成c++ 代码clang -rewrite-objc main.m -o main.cpp以上的命令是不分平台进行编译的,main.cpp 代码有9万多行,如果指定用iphone 的话,用以下的命令,编译之后有3万多行代码xcrun -sdk iphoneos clang -arch arm64 -rewr...原创 2021-03-13 19:51:13 · 543 阅读 · 0 评论
分享