
OC对象
文章平均质量分 84
后跳闪到腰
这个作者很懒,什么都没留下…
展开
-
OC 类的结构分析
网络中有个关于类的关系的图图中虚线部分是isa的的继承关系证明如下图对象->类//打印16进制person的内存地址(lldb) p/x person(LGPerson *) $26 = 0x00000001006e8400//读取person的内存地址(lldb) x/4gx 0x00000001006e84000x1006e8400: 0x001d8001000020f1 0x00000000000000000x1006e8410: 0x00000001006e84e0原创 2020-09-14 08:27:47 · 727 阅读 · 0 评论 -
OC isa结构分析
分析isa结构之前,先了解下OC对象#import <Foundation/Foundation.h>#import "Person.h"@interface Student : NSObject@property(nonatomic,copy) NSString *name;@end@implementation Student@endint main(int argc, const char * argv[]) { @autoreleasepool {原创 2020-09-14 08:26:06 · 321 阅读 · 0 评论 -
iOS 内存对齐原理
计算机中内存空间是按照 byte 划分的,计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地址的值是某个数的倍数,这就是所谓的内存对齐。OC类本质上是一个结构体。以结构体为例struct Person { double a; // 8 char b; // 1 int c; // 4 short d; // 2 }person;struct Student { double a; //8原创 2020-09-14 08:23:44 · 304 阅读 · 0 评论 -
OC对象alloc、init和new的底层实现
oc中创建一个对象Person *p = [[Person alloc] init];那么alloc做了什么?init又做了什么?可以通过查看苹果官方开源的objc相关的源码objc的源码地址源码是基于objc4-781,781的源码与之前的源码有很大的不同,781做了fastpath和slowpath的区别,781版本代码大概率会走fastpath流程。且与zone相关的api在iOS8之后被废弃了。源码编译参考iOS_objc4-756.2 最新源码编译调试alloc查看源码前看一段代原创 2020-09-08 11:20:40 · 339 阅读 · 0 评论