摘要: 消息发送阶段:调用 objc_msgSend 函数,进行一些内部逻辑处理。会涉及到cache_list 和 method_list 等。 动态方法解析:允许开发者动态创建方法。 消息转发:进入消息转发阶段 阅读全文
posted @ 2023-04-21 13:43 dulinshun 阅读(13) 评论(0) 推荐(0)
摘要: Runtime 维护了一张weak表,用来存放对象的weak指针 weak表是一张哈希表,对象的指针为key,value为指向该对象的weak指针数组。 当对象被释放前,会查询weak表中的所有weak指针,并依次指向nil。 阅读全文
posted @ 2023-04-21 13:42 dulinshun 阅读(58) 评论(0) 推荐(0)
摘要: Runtime 底层有一个 map 进行关联。 以对象地址为 key,绑定的对象为 value 进行关联 阅读全文
posted @ 2023-04-21 13:41 dulinshun 阅读(13) 评论(0) 推荐(0)
摘要: 测试类 @interface People () @property (nonatomic, strong) Car *car; @end @implementation People - (instancetype)init { self = [super init]; if (self) { s 阅读全文
posted @ 2023-04-21 13:41 dulinshun 阅读(78) 评论(0) 推荐(0)
摘要: 一个 Runloop 包含了多个 mode 一个 mode 包含了若干个 source0/source1/time/observer Runloop 启动时只能选择其中一个 model 作为当前 model Runloop 常用的 Model 1. UIInitializationRunLoopMo 阅读全文
posted @ 2023-04-21 13:39 dulinshun 阅读(52) 评论(0) 推荐(0)
摘要: 注:适用于Java 等其他语言的技术原理 存储的逻辑 1. 字典底层有一个数组,靠数组来存储数据; 2. 将 key 进行 hash 算法。得到 `hash值`; 3. 将 `hash值` 与 `数组的长度` 进行`位与运算`, 得到的结果为数据应该存储的位置; 4. 找到数组对应的位置,然后设置对 阅读全文
posted @ 2023-04-21 13:39 dulinshun 阅读(116) 评论(0) 推荐(0)
摘要: 具体参考文章 AutoRelease 是依靠 AutoreleasePoolPage 来进行 push 和 pop 进行工作的 AutoreleasePoolPage 为双向链表,parent 字段指向上一层,child 指向下一层 每个 AutoreleasePoolPage 的大小为 4096 阅读全文
posted @ 2023-04-21 13:38 dulinshun 阅读(64) 评论(0) 推荐(0)
摘要: iOS中不是所有的对象都能响应的,只有继承 UIResponder 的对象才能进行响应处理事件,称之为响应者对象。 常见的响应者对象有:UIView, UIViewController, UIApplication 响应链的流程: 1. 当产生某一个触摸事件的时候,这个触摸事件回添加到UIAppli 阅读全文
posted @ 2023-04-21 13:37 dulinshun 阅读(102) 评论(0) 推荐(0)
摘要: KVO 是依赖 kvc 进行实现的。主要是依赖了 isa_swizzling 来实现的。 当对一个类第一次进行观察时,系统会动态的创建一个派生类 修改观察的对象的 isa 指针指向,指向新建的派生类 派生类中,系统会重写观察的属性的 set 方法 然后通过 kvc 的willChangeValueF 阅读全文
posted @ 2023-04-21 13:37 dulinshun 阅读(33) 评论(0) 推荐(0)
摘要: Swift 项目中的 Podfile 中默认会有一个 use_frameworks!,本篇说一下 use_frameworks!。 1. Pod 引入组件的类型 iOS 使用 Pod 引入组件,主要引入以下类型的组件。 类型 1:静态库类型组件。可以为 `.a` 或 `.framework` 类型的 阅读全文
posted @ 2023-04-21 13:36 dulinshun 阅读(1241) 评论(0) 推荐(0)