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