摘要:
isa 2 个经典问题分析 一、类的归属问题 1、2个API objc_getMetaClass() --> 获取元类 class_getMethodImplementation() --> 获取 IMP 2、实例方法 和 类方法 分析 1. 实例方法 class_getInstanceMethod 阅读全文
摘要:
本文探索属性、成员、实例变量。 一、简介 1、属性变量 @property (nonatomic, copy) NSString *propName; @property:做了什么事?文章后面探索。 为 propName 生成了 set/get 方法的声明和实现,同时为其生成了私有的 ivar 成员 阅读全文
摘要:
数据结构 是指 互相之间存在一种或多种关系的数据元素的集合。数据元素之间存在的一or多种特定关系,也就是数据的组织形式。 数据:即符号,可以输入到计算机并被计算机程序处理。 例:整型、字符等数值类型可以进行数值/非数值运算;声音、图像、视频等通过编码手段转成字符数据处理。 数据元素:组成数据的基本单 阅读全文
摘要:
首先看下面举例: 假定 1-2 是现在的master分支状态; 这个时候从 master 分支 checkout 出来一个 Dev01 分支; 然后 master 提交了 3、4,Dev01 提交了5、6、7; 这个时候 master 分支状态就是 1-2-3-4 ,Dev01 分支状态变成 1-2 阅读全文
摘要:
一、内存主要五个区域 简单区分如下图: * 1)栈、堆、全局(静态)区、常量区、代码区的介绍 1、栈 -- 由编译器管理,系统自动分配释放。例如:在函数中声明一个局部变量 int b; 系统会自动在栈中开辟空间。 - 存放:函数参数值、局部变量的值(函数中的基本数据类型)、指针 --> 详细课件 O 阅读全文
摘要:
本文主要介绍 Block 的三种类型。 OC底层探索26、Block 原理 一、Block 是什么? 在 OC 文档的 Working with Blocks 中: Blocks are Objective-C objects, which means they can be added to co 阅读全文
摘要:
本文内容主要对isa指向流程 和 类的结构以及类中 bits 进行探索。 一、类与 isa 运行 objc源码工程,main.m 文件中断点打在 objc2,读取对象 objc2 的内存如下: 图中,我们发现两个不同的 地址,他们的值都是 MyPerson。这是为何呢?--> 元类 我们继续读取内存 阅读全文
摘要:
本文开始探索 OC 对象的本质是什么? 一、对象 对象的本质 - 结构体 1、编译后的对象 1、我们在 main.m 文件中做简单代码如下: #import <Foundation/Foundation.h> #import <objc/runtime.h> @interface MyPerson 阅读全文
摘要:
一、字节对齐 1、为什么要进行字节对齐处理呢? 性能,快,以空间换取时间。 可以想象2个场景,场景1:当我们的CPU去读取内存时,每次读取的大小如果是不确定的(8、7、3、9... ...),那么除非每次读取都要重新改变自己的读取方式否则读取的数据就会读错到其他数据上去。 场景2,如果我们所存储的对 阅读全文
摘要:
本文介绍 如何探索 alloc 和 alloc 做了什么? objc 可编译源码 从最简单的代码开始: MyPerson *p1 = [MyPerson alloc]; MyPerson *p2 = [p1 init]; MyPerson *p3 = [p1 init]; NSLog(@"%@ - 阅读全文