【发布时间】:2014-12-27 23:34:08
【问题描述】:
抱歉,这是一个愚蠢的问题。我刚开始学swift。我的日常工作主要使用 php。 Apple Store 的 Swift 教科书使用以下示例(我将其修改为更短的版本)来演示弱引用的用法:
class Person {
var apartment: Apartment?;
}
class Apartment {
weak var tenant: Person?;
}
var john: Person?; john = Person();
var number73: Apartment?; number73 = Apartment();
john!.apartment = number73; number73!.tenant = john; //circular reference here
john = nil; number73 = nil; //deference from static variable names
在上面的Apartment类定义中,如果从var tenant中去掉weak关键字,它在下面的代码中创建了一个强引用循环,这样两个实例就不会被 GC 处理掉。但是,在我看来,GC 确实不需要弱引用的指示。很明显,这两个实例不能从当前范围内的任何变量或任何静态变量链接,因此可以安全地处理它们。
为什么 Swift 强制使用语法?我能弄清楚的唯一优点是弱关键字突出了逻辑,因此代码更易于阅读。
【问题讨论】:
标签: macos swift garbage-collection circular-reference