会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
菜园子
张张
博客园
首页
新随笔
订阅
管理
1
2
3
4
5
···
7
下一页
2020年10月22日
OC 底层探索 16、类的加载 - 类的扩展 & 分类关联对象
摘要: 一、类扩展 1、类扩展与分类 category: 准用来给类添加新方法; 不能添加成员变量,即使添加了也无法取到; 属性可添加,但只会生成 setter/getter 的声明而没有相应的实现 --> 可通过 runtime 进行关联实现。 extension: 可看做匿名分类; 可以给类添加成员属性
阅读全文
posted @ 2020-10-22 12:01 张张_z
阅读(322)
评论(0)
推荐(0)
2020年10月18日
OC 底层探索 15、类的加载3 - 分类的加载
摘要: 本文继续衔接 OC 底层探索 14、类的加载2 探索分类的加载。调试源码 一、分类的本质 分类的结构查看方法 1).cpp 文件 在 main.m 中任意添加一个分类信息的 .h .m 文件信息,编译生成cpp文件 clang -rewrite-objc main.m -o main.cpp 如下t
阅读全文
posted @ 2020-10-18 00:27 张张_z
阅读(274)
评论(0)
推荐(0)
2020年10月17日
OC 底层探索 14、类的加载2 - 类的 data
摘要: 本文衔接 OC 底层探索 13 继续探索类的加载,我们已知通过 readClass() 读取了编译器写的类(or元类),同时给 cls 赋了 name 和把cls 插入到了类/元类的表中,此时cls不仅有了地址还有了 name。此时的类是什么样子的呢?我们读取一下 cls 的内存情况,见下图: 通过
阅读全文
posted @ 2020-10-17 19:35 张张_z
阅读(230)
评论(0)
推荐(0)
2020年10月12日
OC 底层探索 13、类的加载1 - dyld和objc的关联
摘要: 本文开始探索类的加载。调试源码 objc 源码工程 _objc_init 函数: 1 /*********************************************************************** 2 * _objc_init 3 * Bootstrap initi
阅读全文
posted @ 2020-10-12 23:07 张张_z
阅读(426)
评论(0)
推荐(0)
2020年10月5日
OC 底层探索 12、应用程序加载
摘要: 方法等是如何加载到内存中的呢,或者说类的加载都做了什么?在此之前,我们先探索 APP 从响应用户点击到完全启动的过程 即 应用程序加载 都做了什么事情。 首先我们准备一个 iOS 的 APP 工程,ViewController.m 中添加 load 方法,main.m中添加一个 C++ 的 方法,代
阅读全文
posted @ 2020-10-05 14:57 张张_z
阅读(188)
评论(0)
推荐(0)
数据结构与算法 01、 基本认知 & 线性表初探
摘要: 本文用来了解数据结构与算法的一些基础。 书籍推荐:《大话数据结构 - 程杰 著》 一、算法 1、算法特性 算法:解决特定问题的一步步思路方法步骤。在计算机中其表现在指令的有限序列,每个指令包含一或多个操作。 算法特性: 有输入输出 有穷性 - 有限步骤内完成,不能无限循环 确定性 - 有确定结果,不
阅读全文
posted @ 2020-10-05 14:56 张张_z
阅读(106)
评论(0)
推荐(0)
2020年9月26日
OC 底层探索 11、objc_msgSend 流程 3 - 动态方法决议&消息转发
摘要: 我们已经知道 objc_msgSend 的消息查找流程首先是 缓存 cache 查找,然后是去方法列表递归查找,若一直没有找到消息一般则会 crash 报错找不到该消息。 但是直接crash太过不友好,下面就进行探究苹果给我们的3次机会。 消息处理的流程图: 一、动态方法决议 1、通过简单代码切入
阅读全文
posted @ 2020-09-26 23:59 张张_z
阅读(415)
评论(0)
推荐(0)
2020年9月25日
OC 底层探索 10、objc_msgSend 流程 2 - 慢速查找
摘要: 我们已经知道消息发送流程首先会走到缓存 cache 里面,那么当缓存中没有查询到消息时 __objc_msgSend_uncached,后续怎么继续执行呢? 一、切入口 __objc_msgSend_uncached --> MethodTableLookup --> _lookUpImpOrFor
阅读全文
posted @ 2020-09-25 22:38 张张_z
阅读(312)
评论(0)
推荐(0)
2020年9月23日
OC 底层探索 09、objc_msgSend 流程 1-缓存查找
摘要: 本文对 Runtime 进行简单介绍 和对 objc_msgSend 的发消息流程中的缓存查找进行探索。 更新(流程图概览):缓存查找流程图 我们知道类结构中包含了很多信息:isa superclass cache bits,cache 中缓存了我们调用的方法,具体流程见OC底层探索07. 但是方法
阅读全文
posted @ 2020-09-23 23:56 张张_z
阅读(394)
评论(0)
推荐(0)
2020年9月22日
OC 底层探索 07、类的结构分析2 - cache_t
摘要: 本文来探索类结构中 cache_t. 之前的文章OC底层探索04 中,已知如何找到类信息。本文我们对类信息中的 cache_t 进行探索。 objc_class 结构 : 从 OC底层探索04 中的指针和内存偏移,我们已知可通过指针平移获取相应位置信息,cache_t 的位置 = 8 + 8 =16
阅读全文
posted @ 2020-09-22 21:26 张张_z
阅读(438)
评论(0)
推荐(0)
1
2
3
4
5
···
7
下一页
公告