首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Easting
掘友等级
iOS探索者
|
武汉某公司
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
31
文章 31
沸点 0
赞
31
返回
|
搜索文章
最新
热门
iOS 底层探索篇 —— 类和分类的加载
类的动态加载实际上就是运用runtime运行时来加载一个类。 1. objc_allocateClassPair 参数1 superclass 创建类的父类。 参数2 name 创建类的名字。 2. class_addIvar 参数1 cls 动态创建的类。 参数2 name …
iOS 底层探索篇 —— map_Images之类加载
由于dyld流程加载是一个比较复杂的过程,这里我们只做简单的分析。 dyld主要的步骤都在读取MachO段里面的数据,这一步在今后的文章中会做分析,敬请期待。 1. _objc_init注释 2. environ_init 我们可以调整相关的环境变量的值。如下 3. tls_i…
iOS 底层探索篇 —— isKindOfClass、isMemberOfClass探索
本篇文章对isKindOfClass、isMemberOfClass的探索,是为了加深对isa指向分析的理解。 1. 代码 2. 输出结果 1. 类方法底层分析 通过第二步的分析,代码的走向ISA() -> (Class)(isa.bits & ISA_MASK)。 2. 对象…
iOS 底层探索篇 —— 方法的转发流程
在iOS 底层探索篇 —— 方法的查找流程这篇文章中,我们已经知道了方法的查找的流程了,如果方法没有查找到,在lookUpImpOrForward()函数里面还有一部分是留给查找失败的处理。 接下来我们开始去分析下面两个流程。 1. 函数入口 2. 解析方法 3. 对象与类方法…
iOS 底层探索篇 —— 方法的查找流程
1. 我们在main.m文件里面定义一个sayHello方法 2. clang这个main.m文件之后,我们可以在相应的main.cpp文件里面可以看到 3. 我们把第2步的main函数里面的sayHello函数抽出来然后精简一下 objc_msgSend函数的参数,对象(或者…
iOS 底层探索篇 —— cache_t分析
1. 类结构体 2. cache_t结构体 3. struct bucket_t *_buckets 4. mask_t _mask 一个修饰的值,在接下来的分析可以得到是 hash链表的长度减1。 5. mask_t _occupied 通过bucket_t结构体观察存的就是…
iOS 底层探索篇 —— 类的结构分析
1. 万物皆对象 NSObject就是一个类,其本质是objc_class。 NSObject是OC的类型,objc_object是c的类型。 NSObject是对objc_object的封装。 2. 类结构 3. 类结构成员分析 一个被注释的成员,代表是从父类继承过来的,所占…
iOS 底层探索篇 —— isa的初始化&指向分析
1. 从内存段分析 iOS 底层探索篇 —— 内存字节对齐分析这篇文章中,我们通过lldb调试的时候,第一个内存段我们并不是直接打印po出来的,而是po 0x00000001029570d0 & 0x0000000ffffffff8这样的操作,来打印出来的对象。 2. 从对象的…
iOS 底层探索篇 —— 对象的本质
1. 准备代码 2. 分析编译生成的main.cpp文件 对象的本质在底层就是一个结构体。 属性与成员变量的区别,属性是由成员变量+getter方法+setter方法组成。 3. 分析method_list_t结构体 第一个符号v返回值类型,24返回值类型的长度。 第二个符号@…
iOS 底层探索篇 —— 内存字节对齐分析
每个特定的平台上的编译器都有自己的默认“对齐系数”(也叫对齐模数)。我们可以通过预编译命令#pragma pack(n),n=1、2、4、8、16 来改变这一系数,其中的n就是要指定的“对齐系数”。我们iOS编译器Xcode的对齐系数就是8。 数据成员对齐规则:(Struct或…
下一页
个人成就
文章被点赞
28
文章被阅读
12,376
掘力值
250
关注了
29
关注者
14
收藏集
1
关注标签
15
加入于
2017-01-05