稀土掘金 稀土掘金
    • 首页
    • 沸点
    • 课程
    • 数据标注 HOT
    • AI Coding
    • 更多
      • 直播
      • 活动
      • APP
      • 插件
    • 直播
    • 活动
    • APP
    • 插件
      • 搜索历史 清空
        • 写文章
        • 发沸点
        • 写笔记
        • 写代码
        • 草稿箱
        创作灵感 查看更多
  • 后端
  • 前端
  • Android
  • iOS
  • 人工智能
  • 开发工具
  • 代码人生
  • 阅读
  • 13-7.【OC】【性能】objc_msgSend 与直接函数调用性能差异如何量化?
    要量化 objc_msgSend 与直接函数调用的性能差异,我们需要从时钟周期、指令流水线以及编译器优化这三个维度进行拆解。 在现代 Apple 芯片(如 M3/M4)上,这种差异通常被压缩在**纳秒
    • 项阿丑
    • 1月前
    • 27
    • 点赞
    • 评论
    Objective-C
  • 13-6.【OC】【性能】大量临时对象产生时,autoreleasepool 如何影响性能?
    在 Objective-C 和带有 @objc 标记的 Swift 代码中,autoreleasepool 是平衡内存压力与处理性能的关键杠杆。当大量临时对象产生时,它对性能的影响主要体现在 内存峰值
    • 项阿丑
    • 1月前
    • 19
    • 点赞
    • 评论
    Objective-C
  • 13-5.【OC】【性能】__strong / __weak / __unsafe_unretained 的性能差异是什么?
    在 ARC 的内存管理体系中,这三种修饰符代表了三种截然不同的指令路径和运行时开销。 其性能差异的核心在于:为了保证安全性,系统究竟在后台做了多少次原子操作和哈希表查找。 1. __strong:标准
    • 项阿丑
    • 1月前
    • 20
    • 点赞
    • 评论
    Objective-C
  • 13-4.【OC】【性能】ARC 插入 retain / release 会带来什么开销?
    ARC(自动引用计数)虽然在代码层面免去了手动管理内存的痛苦,但在底层二进制层面,它并非免费。ARC 的开销主要体现在 CPU 指令执行、原子操作锁竞争、以及编译器优化抑制这三个方面。 以下是 ARC
    • 项阿丑
    • 1月前
    • 21
    • 点赞
    • 评论
    Objective-C
  • 13-3.【OC】【性能】在大量方法调用场景下,如何分析消息发送是否成为性能瓶颈?
    在处理高频、大量的 Objective-C 方法调用时,单纯猜测 objc_msgSend 是瓶颈往往是不准确的。我们需要通过定量测量、缓存命中率分析以及汇编级追踪来确定瓶颈所在。 以下是针对消息发送
    • 项阿丑
    • 1月前
    • 21
    • 点赞
    • 评论
    Objective-C
  • 13-2.【OC】【性能】objc_msgSend 的调用成本到底有多高?
    关于 objc_msgSend 的调用成本,我们不能只看一个绝对的数值,而要从它的查找链路、汇编优化以及与静态派发的对比三个维度来看。 简单来说:在缓存命中的情况下,它的开销极低(几纳秒);但在缓存未
    • 项阿丑
    • 1月前
    • 15
    • 点赞
    • 评论
    Objective-C
  • 13-1.【OC】【性能】Objective-C 的性能瓶颈通常出现在什么地方?如何优化?
    Objective-C 作为一门极度依赖 Runtime(运行时) 的动态语言,其性能瓶颈主要源于其“高度动态化”带来的开销。相比于 C++ 或 Swift 的静态派发,Objective-C 许多决
    • 项阿丑
    • 1月前
    • 20
    • 点赞
    • 评论
    Objective-C
  • 12-10.【OC】【Swift+OC 混编】Swift 与 OC 混编项目中最常见的坑有哪些?
    在 Swift 与 Objective-C 的混编项目中,开发者最常遇到的“坑”往往隐藏在动态性、内存管理语义以及编译器自动翻译的细节中。 以下是整理出的混编项目五大高频陷阱及解决方案: 1. 命名冲
    • 项阿丑
    • 1月前
    • 32
    • 点赞
    • 评论
    Objective-C
  • 12-9.【OC】【Swift+OC 混编】OC 调用 Swift 方法时,是否存在 retain / release 异常?
    这是一个非常敏锐的问题。简单来说:在正常桥接(@objc)的情况下,不会出现 retain/release 异常。 这是因为 Swift 编译器在生成 Thunk(存根函数) 时,已经通过一套名为 “
    • 项阿丑
    • 1月前
    • 18
    • 点赞
    • 评论
    Objective-C
  • 12-8.【OC】【Swift+OC 混编】Swift ABI 稳定后,对 OC 调用有什么影响?
    Swift ABI(应用二进制接口)稳定是 Swift 发展史上的分水岭。虽然它主要解决了 Swift 库之间的兼容性问题,但对于 Objective-C 调用 Swift 的底层链路也产生了深远的影
    • 项阿丑
    • 1月前
    • 21
    • 点赞
    • 评论
    Objective-C
  • 12-7.【OC】【Swift+OC 混编】OC 能访问 Swift enum / struct 吗?
    简单直接的回答是:不能直接访问,但可以通过“桥接”变通。 Objective-C 的底层架构(Runtime)是基于 C 语言指针和固定内存布局的,而 Swift 的 struct 和 enum(尤其
    • 项阿丑
    • 1月前
    • 23
    • 点赞
    • 评论
    Objective-C
  • 12-6.【OC】【Swift+OC 混编】Generated Header 是如何生成的?
    在 Swift 与 Objective-C 的混编体系中,Generated Header(即著名的 ProjectName-Swift.h)并不是一个简单的文本拷贝,而是由 Swift 编译器(sw
    • 项阿丑
    • 1月前
    • 18
    • 点赞
    • 评论
    Objective-C
  • 12-5.【OC】【Swift+OC 混编】Swift protocol 标记 @objc 后,在 OC 端如何调用?
    当你在 Swift Protocol 前加上 @objc 后,它在 Objective-C (OC) 端的使用体验几乎与原生的 NSProtocol 一致。由于编译器生成了桥接元数据,OC 可以通过标
    • 项阿丑
    • 1月前
    • 33
    • 点赞
    • 评论
    Objective-C
  • 12-4.【OC】【Swift+OC 混编】Swift 方法被 @objc 标记后,编译器插入了哪些 Runtime 信息?
    当你在 Swift 方法前加上 @objc 标记时,编译器(Swiftc)不再仅仅生成一段高效的二进制机器码,而是会在你的二进制文件中注入一套复杂的“元数据链”,以确保 Objective-C Run
    • 项阿丑
    • 1月前
    • 32
    • 点赞
    • 评论
    Objective-C
  • 12-3.【OC】【Swift+OC 混编】为什么 Swift 泛型在 Objective-C 中消失?
    在 Objective-C 中,你可能会发现 Swift 的泛型类变成了“空壳”或者干脆消失了。这背后的根本原因在于 Swift 的“强类型特化”设计 与 Objective-C 的“弱类型集合”设计
    • 项阿丑
    • 1月前
    • 23
    • 点赞
    • 评论
    Objective-C
  • 12-2.【OC】【Swift+OC 混编】Swift 类型如何映射到 Objective-C?
    Swift 类型映射到 Objective-C 的过程是由 Swift 编译器(Clang 与 Swift 编译器前端)通过生成的 -Swift.h 桥接头文件 自动完成的。 由于 Swift 是静态
    • 项阿丑
    • 1月前
    • 29
    • 点赞
    • 评论
    Objective-C
  • 12-1.【OC】【Swift+OC 混编】@objc 和 dynamic 有什么区别?
    在 Swift 中,@objc 和 dynamic 都与 Objective-C 运行时(Runtime)有关,但它们的职责完全不同: @objc 负责“可见性”,而 dynamic 负责“派发方式”
    • 项阿丑
    • 1月前
    • 32
    • 点赞
    • 评论
    Objective-C
  • 11-5.【OC】【protocol】Protocol extension 默认实现的静态派发原理是什么?
    在 Swift 中,Protocol Extension(协议扩展)提供的默认实现究竟是静态派发还是动态派发,取决于该方法是否在 Protocol 的主定义(Declaration) 中声明。 这是一
    • 项阿丑
    • 1月前
    • 23
    • 点赞
    • 评论
    Objective-C
  • 11-4.【OC】【protocol】Swift protocol 中的 associatedtype 和泛型约束如何映射到 runtime?
    Swift 的协议与 Objective-C 协议最大的不同在于:OC 协议是动态的、基于消息的,而带 associatedtype 的 Swift 协议(通常被称为 PATs, Protocols
    • 项阿丑
    • 1月前
    • 22
    • 点赞
    • 评论
    Objective-C
  • 11-3.【OC】【protocol】Swift Protocol 与 OC Protocol 的桥接原理是什么?
    Swift 与 Objective-C (OC) Protocol 的桥接是 iOS 混编开发的核心。其底层原理可以概括为 “编译器自动合成转换器(Thunking)” 与 “运行时元数据对齐” 。
    • 项阿丑
    • 1月前
    • 29
    • 点赞
    • 评论
    Objective-C
  • 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