x86_64 的 CALL 指令长度是固定的吗? 时间: 2021-05-01 | 阅读: 376 字 ~1分钟 最近和群友讨论指令集时,遇到一个有意思的问题,x86_64 的 CALL 指令长度会发生变化吗? 今天我们通过一个简单的例子验证一下 call 指令简介 CALL 指令调用一 阅读全文 »
跟着 NSDictionary 的底层设计学习优化技巧(1) 时间: 2021-05-01 | 阅读: 5088 字 ~11分钟 最近有些群友反馈自己经常遇到一些与 NSDictionary 底层相关的面试题。 本系列文章会通过分析系统库汇编的方式对此类问题进行答疑解惑 😁 一、·NSDictiona 阅读全文 »
跟着 NSDictionary 的底层设计学习优化技巧(2) 时间: 2021-05-01 | 阅读: 6936 字 ~14分钟 [toc] 本文会分享 NSMutableDictionary 的创建过程和 cow 机制 NSMutableDictionary 的创建流程 本小节以下面的代码为例介绍 NSMutableDictionary 的创建过程 1 NSMutableDictionary *mutableDic = [NSMutableDictionary dictionary]; 通过下面的指令,我们可以发现 NSMutableDictionary 类并不存在类方法 阅读全文 »
跟着 NSDictionary 的底层设计学习优化技巧(3) 时间: 2021-05-01 | 阅读: 6224 字 ~13分钟 [toc] 前言 今天的文章结构会比上篇清晰很多,请放心食用。 cow cow 是 copy on write 的简写,是一种通过延迟复制时机节省时间和空间的编程技术 本文会通过对 NSMutableDictionary 的底层分析 阅读全文 »
iOS 各种奇怪的崩溃 时间: 2021-04-15 | 分类: 技术 | 阅读: 163 字 ~1分钟 本文会分享一些奇怪的崩溃堆栈,每个崩溃对应的类型和堆栈都存在差异。读者可以猜测一下本后的原因 注意,本文所有崩溃的原因都是同一个 EXC_BAD_ACCESS (code=1, address=0x11f645b98) 第一个堆 阅读全文 »
iOS runtime 研究笔记 时间: 2021-04-07 | 阅读: 994 字 ~2分钟 前言 因为某个神秘的原因,对多个动态库的加载机制做了一些简单的测试。 ps. 部分测试结果可能会颠覆很多网友的认知 一、分类的 +load 方法执行时机可能早于类自 阅读全文 »
分享一些有趣的经历 时间: 2021-04-07 | 阅读: 217 字 ~1分钟 VS Code 笔者尝试通过自己编译 VS Code 的方式进行了排查,发现背后的原因是 VS Code 依赖一个编码检测库以预测的方式支持 GDK 等文字编码,预测不准后,就会将正常的汉 阅读全文 »
通过 php 的语法设计将判断 NSArray 数组是否包含指定元素的时间复杂度从 O(n) 降为 O(1) 时间: 2021-04-07 | 阅读: 1012 字 ~3分钟 前言 NSArray 获取指定 元素 的位置 或者 判断是否存在指定的 元素 的时间复杂度是 O(n/2)(如果不包含,耗时是 O(n))。 当我们需要频繁进行该操作时,可能 阅读全文 »
Xcode 新构建系统 与 cmake 的兼容性解决方案 时间: 2021-03-22 | 阅读: 576 字 ~2分钟 什么是 Xcode 构建系统 Build system 是一套将源码和资源文件转为 APP 的工具。 比如,当我们进行点击下图的运行按钮(Run Button) (▶️)时,Xcode 就会调用 Build System 进行 APP 阅读全文 »
GCD 的线程数量限制分析 时间: 2021-03-21 | 阅读: 1206 字 ~3分钟 前言 有网友在交流群反馈自己遇到一个“奇怪”的面试题:“GCD 最多开多少线程?” 本文,会通过实际的 Demo 测试不同场景下的情况 测试环境 iOS 14.3 测试代码 全 阅读全文 »