稀土掘金 稀土掘金
    • 首页
    • 沸点
    • 课程
    • 数据标注 HOT
    • AI Coding
    • 更多
      • 直播
      • 活动
      • APP
      • 插件
    • 直播
    • 活动
    • APP
    • 插件
      • 搜索历史 清空
        • 写文章
        • 发沸点
        • 写笔记
        • 写代码
        • 草稿箱
        创作灵感 查看更多
  • 后端
  • 前端
  • Android
  • iOS
  • 人工智能
  • 开发工具
  • 代码人生
  • 阅读
  • 2-20.【OC】【内存管理】Swift 的 [weak self] 与 [unowned self] 的底层区别是什么?
    在 Swift 中,[weak self] 和 [unowned self] 都是为了打破闭包产生的循环引用,但它们在 Runtime(运行时)安全性和引用计数底层实现上有着本质的区别。 简单来说:w
    • 项阿丑
    • 7天前
    • 9
    • 点赞
    • 评论
    Objective-C
  • 2-19.【OC】【内存管理】Swift 中 closure 的捕获语义与 OC block 的关键差异是什么?
    虽然 Swift 的 Closure(闭包)在很多概念上继承了 Objective-C 的 Block,但在底层捕获语义和编译器优化上,两者有着本质的区别。 最核心的差异可以总结为一句话:Swift
    • 项阿丑
    • 7天前
    • 9
    • 点赞
    • 评论
    Objective-C
  • 2-18.【OC】【内存管理】 __block 在 MRC 和 ARC 下行为是否一致?
    不一致。 虽然 __block 的核心目标(允许 Block 内部修改外部变量)在两个环境下是一样的,但它在内存管理语义上存在一个巨大的、甚至足以导致程序崩溃的差异。 1. 核心差异:是否会触发 Re
    • 项阿丑
    • 7天前
    • 6
    • 点赞
    • 评论
    Objective-C
  • 2-17.【OC】【内存管理】 Block 的变量捕获规则是怎样的?
    Objective-C Block 的变量捕获规则是其最核心的机制。Block 为了保证在未来某个时刻执行时变量依然可用,会根据变量的类型和修饰符,采取截然不同的“打包”策略。 我们可以将其归纳为以下
    • 项阿丑
    • 7天前
    • 20
    • 点赞
    • 评论
    Objective-C
  • 2-16.【OC】【内存管理】Block 的三种存储类型分别是什么?
    在 Objective-C 中,Block 本质上是一个封装了函数及其执行上下文(变量捕获)的 OC 对象。根据其内存存储位置的不同,Block 分为三种主要的存储类型。 你可以通过查看 Block
    • 项阿丑
    • 7天前
    • 14
    • 点赞
    • 评论
    Objective-C
  • 2-15.【OC】【内存管理】NSTimer 为什么必然导致循环引用?
    说 NSTimer “必然”导致循环引用其实有些绝对,但在 iOS 10 / macOS 10.12 之前,如果你使用经典的 scheduledTimerWithTimeInterval:target
    • 项阿丑
    • 7天前
    • 6
    • 点赞
    • 评论
    Objective-C
  • 2-14.【OC】【内存管理】delegate 为什么通常用 weak?
    在 Objective-C 和 Swift 开发中,delegate(代理)属性几乎约定俗成地使用 weak(在 MRC 下用 assign)。这背后的核心原因只有一个:防止循环引用(Retain C
    • 项阿丑
    • 7天前
    • 6
    • 点赞
    • 评论
    Objective-C
  • 2-13.【OC】【内存管理】ARC 是否意味着“没有性能成本”?
    简单直接的答案是:不,ARC 不仅有性能成本,甚至在某些特定情况下比手动管理(MRC)还要高。 虽然 ARC 的初衷是自动化和安全,但“自动化”的代价是由 CPU 的时钟周期和内存开销来支付的。我们可
    • 项阿丑
    • 7天前
    • 7
    • 点赞
    • 评论
    Objective-C
  • 2-12.【OC】【内存管理】ARC 下为什么循环里创建大量临时对象容易内存暴涨?
    在 ARC 环境下,循环中内存暴涨的根本原因在于:自动释放对象的“死亡时间”被推迟到了当前 RunLoop 的末尾。 虽然 ARC 帮我们省去了手写 release 的麻烦,但它依然遵循 Object
    • 项阿丑
    • 7天前
    • 12
    • 点赞
    • 评论
    Objective-C
  • 2-11.【OC】【内存管理】ARC 下,autoreleasepool {} 的底层结构是什么?
    在 ARC 环境下,@autoreleasepool {} 看起来是一个简单的语法糖,但其底层是一套基于**栈(Stack)**结构的内存管理机制。 当你编写 @autoreleasepool {}
    • 项阿丑
    • 7天前
    • 8
    • 点赞
    • 评论
    Objective-C
  • 2-10.【OC】【内存管理】__unsafe_unretained 与 __weak 的底层差异是什么?
    从底层实现来看,__unsafe_unretained 和 __weak 的差异本质上是 “原始指针” 与 “运行时托管指针” 的区别。 虽然它们都不增加引用计数,但处理对象销毁(Deallocati
    • 项阿丑
    • 7天前
    • 9
    • 点赞
    • 评论
    Objective-C
  • 2-9.【OC】【内存管理】weak 表是什么时候被清理的?
    weak 表的清理发生在一个对象的 生命终点,确切地说,是在 dealloc 流程执行到 objc_destructInstance 这一步时。 清理过程并不是一蹴而就的,而是一场严密的“定点清除”行
    • 项阿丑
    • 7天前
    • 8
    • 点赞
    • 评论
    Objective-C
  • 2-8.【OC】【内存管理】weak 表(Side Table)里到底存了什么?
    在 Objective-C 的底层实现中,SideTable 是管理内存安全的核心仓库。它并不是一张简单的表,而是一个复杂的 多级嵌套数据结构,专门用来存储引用计数和弱引用信息。 我们可以通过“三层嵌
    • 项阿丑
    • 7天前
    • 6
    • 点赞
    • 评论
    Objective-C
  • 2-7.【OC】【内存管理】__weak 变量为什么在对象释放后会自动变成 nil?
    __weak 变量之所以能在对象释放时自动清空(Zeroing),并不是因为它在不断地“监听”对象,而是因为 Objective-C Runtime 维护了一套高效的**弱引用表(Weak Table
    • 项阿丑
    • 7天前
    • 10
    • 点赞
    • 评论
    Objective-C
  • 2-6.【OC】【内存管理】ARC 下,__strong 的真实含义是什么?
    在 ARC 环境下,__strong 是 Objective-C 指针的默认修饰符。它的真实含义可以从所有权语义、生命周期管理以及底层运行时实现三个维度来解剖。 简单来说,__strong 的本质是:
    • 项阿丑
    • 7天前
    • 4
    • 点赞
    • 评论
    Objective-C
  • 2-5.【OC】【内存管理】ARC 编译期插入了哪些代码?
    在 ARC(Automatic Reference Counting)模式下,编译器(Clang)并不是简单地替你手写了 retain/release,它实际上进行了一场**“静默的局部最优解计算”*
    • 项阿丑
    • 7天前
    • 10
    • 点赞
    • 评论
    Objective-C
  • 2-4.【OC】【内存管理】MRC 下,下面代码是否安全?为什么?
    在 MRC(Manual Reference Counting)环境下,这段代码是安全的,但它代表了一种极度不规范且容易埋坑的写法。 虽然最终内存引用计数是平衡的,但它违反了 Objective-C
    • 项阿丑
    • 7天前
    • 5
    • 点赞
    • 评论
    Objective-C
  • 2-3.【OC】【内存管理】autorelease 在 MRC 下到底做了什么?
    在 MRC 下,autorelease 的本质是 “延迟释放” 。它既不是立即销毁对象,也不是增加引用计数,而是将对象的所有权转交给了一个名为 AutoreleasePool(自动释放池) 的管理器。
    • 项阿丑
    • 7天前
    • 8
    • 点赞
    • 评论
    Objective-C
  • 2-2.【OC】【内存管理】alloc / new / copy / mutableCopy 与 retain 在“所有权”上的本质区别是什么?
    虽然这五个操作最终都会导致对象的“引用计数(Reference Count)”增加,但从所有权(Ownership)的哲学和内存物理演进来看,它们有着本质的区别。 我们可以把 alloc/new/co
    • 项阿丑
    • 7天前
    • 6
    • 点赞
    • 评论
    Objective-C
  • 2-1.【OC】【内存管理】MRC 下,“谁拥有对象?谁负责释放?”的准确判定规则是什么?
    在 MRC(Manual Reference Counting)时代,判定“谁负责释放”并不看心情,而是遵循一套极其严苛的、基于方法名关键字的黄金法则。 这套规则由苹果定义,本质上是把 C 语言对内存
    • 项阿丑
    • 7天前
    • 5
    • 点赞
    • 评论
    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