【发布时间】:2015-09-01 20:47:04
【问题描述】:
我知道每次我在键盘上按 CMD + B:
- Xcode 确实唤醒了 ARC
- ARC 分析我的代码并编写所有
retain/release/autorelease调用 - 代码终于被LLVM编译了
在这个过程中还发生了一些事情,但是我要问的是......
ARC在哪里写发布说明?
- 就在引用类实例的变量超出范围之前
- 就在上次使用该变量之后
示例
class HugeObject {
func doVeryImportantStuff() { print("The answer is \((10*4)+2)") }
}
func foo() {
let a = HugeObject()
a.doVeryImportantStuff()
// <-- Point A
let b = HugeObject()
b.doVeryImportantStuff()
// <-- Point B
}
ARC 将在哪里写入 a.release() 行?
-
Point B? - 或者,更好的是,它能够理解
a.release可以安全地移动到Point A?
我怀疑足迹可能会产生重要影响,但我找不到任何相关信息。
【问题讨论】:
标签: objective-c swift memory-management automatic-ref-counting