首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
后端
前端
Android
iOS
人工智能
开发工具
代码人生
阅读
3-25.【OC】【Runtime】动态方法解析成功后,是否还会进入消息转发流程?
不会。 如果“动态方法解析”成功(即 resolveInstanceMethod: 或 resolveClassMethod: 返回了 YES),Runtime 会认为该方法现在已经存在,并重新尝试查
3-24.【OC】【Runtime】什么是“动态方法解析”?
“动态方法解析”(Dynamic Method Resolution)是 Objective-C 消息转发机制的第一道防线。 当对象收到一条它无法识别的消息(即在 cache 和方法列表中都没找到对应
3-23.【OC】【Runtime】如果一定要在 Swift 中做类似 Swizzle 的事情,有哪些替代方案?
在 Swift 中需要实现类似 Swizzling 的功能(如全局拦截、日志埋点、行为注入),但又想避开 Objective-C Runtime 的风险,可以根据不同的应用场景选择以下四种主流替代方案
3-22.【OC】【Runtime】Swift 中为什么官方不推荐 Swizzling?
1. 静态派发(Static Dispatch)的性能冲突 Swift 的核心优势之一是执行效率。为了追求极致性能,Swift 编译器会尽可能使用静态派发或 vtable(函数表)派发。 冲突点:Sw
3-21.【OC】【Runtime】Category + Swizzling 同时存在时,调用顺序如何保证?
当 Category(分类) 和 Swizzling(方法交换) 同时出现时,系统的调用逻辑会变得非常微妙。要理清顺序,我们需要将“方法查找机制”和“Swizzling 带来的指针偏移”结合起来看。
3-20.【OC】【Runtime】Swizzling 在继承链中有哪些坑?
在继承链(Inheritance Chain)中进行 Method Swizzling 是最容易导致“幽灵 Bug”的区域。如果不理解父类、子类与方法列表之间的关系,轻则导致功能失效,重则导致全量崩溃
3-19.【OC】【Runtime】多次 Swizzle 同一个方法会发生什么?
多次 Swizzle 同一个方法(通常称为 Nested Swizzling 或 Swizzling Chain)在底层完全行得通,但它像是一场“指针接力赛”,如果逻辑不严密,极易变成“死亡循环”。
3-18.【OC】【Runtime】Swizzling 应该发生在什么时机最安全?
在 Objective-C 中,Method Swizzling 最安全、最标准的时机只有一个:在类的 +load 方法中执行。 1. 为什么是 +load? +load 方法具有以下几个保证安全性的
3-17.【OC】【Runtime】Method Swizzling 的底层原理是什么?到底交换了什么?
Method Swizzling 的本质是利用 Objective-C 的动态性,在运行时(Runtime)修改类对象中 Selector(SEL) 与 Implementation(IMP) 的映射
3-16.【OC】【Runtime】Swift 的方法调用是否也存在类似 Method Cache 的机制?和 OC Runtime 有哪些差异?
Swift 确实有缓存优化,但它的核心机制与 Objective-C 的动态哈希表查找完全不同。 Swift 的设计哲学是**“尽可能静态化”**。为了追求极致性能,它将大部分工作从“运行时”挪到了“
3-15.【OC】【Runtime】objc_msgSendSuper 和 objc_msgSend 在查找起点上有什么区别?
在 Objective-C 中,self 是一个对象指针,而 super 并不是一个真正的对象,它只是一个编译器指令。 它们在底层的区别在于:查找方法时“第一站”在哪里。 1. 查找起点的对比 我们可
3-14.【OC】【Runtime】cache miss 一定会去遍历方法列表吗?还有哪些优化路径?
如果每次 Cache Miss(缓存未命中)都去老老实实地遍历几千个方法的列表,Objective-C 的性能早就崩了。 在进入最慢的“方法列表遍历”之前,Runtime 实际上设计了好几层“减速带”
3-13.【OC】【Runtime】如果一个方法在子类和父类中都存在,cache 是如何区分的?
Cache 是属于“类对象”的私有资产,而不是全局共享的。 Runtime 区分它们并不是靠某个特殊的 ID,而是靠存储的位置。 1. “私有笔记本”原则 在 Objective-C 中,每一个类(S
3-12.【OC】【Runtime】为什么方法第一次调用慢,后续调用会明显变快?
这正是 Objective-C **消息机制(Messaging)**设计的核心精髓。简单来说,第一次调用是在“走流程买票”,后续调用则是“刷脸进场”。 这种性能差异源于 Runtime 架构中 “快
3-11.【OC】【Runtime】Method Cache 的 key 是什么?
在 Objective-C 的 Runtime 源码(以 objc4 为例)中,Method Cache(即 cache_t)本质上是一个哈希表。 简单直接的答案是:Method Cache 的 Ke
3-10.【OC】【Runtime】objc_msgSend 为什么必须写成汇编,而不能是普通 C 函数?
简单来说,objc_msgSend 是 Objective-C 动态性的心脏,它之所以必须用**汇编(Assembly)**编写,是因为它需要挑战 C 语言的极限,完成三件 C 语言几乎“不可能完成的
iOS——IPATool工具的使用
IPATool 是一款命令行工具,可通过 Apple ID 从 App Store 下载加密 IPA 包,支持多平台(macOS/Windows/Linux),适用于开发者测试、版本归档等场景。 一、
iOS 多线程本质理解:任务、队列与线程到底是什么关系?
iOS 多线程本质理解:任务、队列与线程到底是什么关系? 在 iOS 多线程学习中,很多人都会卡在同一个问题上: 如果这些问题没有形成清晰的“脑内模型”, 那么同步 / 异步、串行 / 并发就只能靠死
浅谈weak与unowned
在iOS的开发中,经常会有A持有B,但是B又持有A的问题,这就是老生常谈的循环引用,目前最常用的方法就是使用weak或者unowned去打破循环。接下来浅谈下两者的底层实现原理以及两者的对比。
Xcode 26.3-Coding Agents
从 Xcode 26.3 开始,Apple 正式引入 Coding Agents(编码代理) 概念,目前 Xcode 内置支持的典型代表包括 Claude Agent 和 Codex。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30