【发布时间】:2014-10-03 14:14:06
【问题描述】:
阅读 Apple 的 Swift Programming Guide 我在 ARC 的解释中遇到了这个示例;
class Person {
let name: String
init(name: String) {
self.name = name
println("\(name) is being initialized")
}
deinit {
println("\(name) is being deinitialized")
}
}
var reference1: Person?
var reference2: Person?
var reference3: Person?
我理解这样的想法,因为变量是选项类型,所以它们被初始化为 nil 值并且不引用 Person 实例。所以以下对我来说很有意义;
reference1 = Person(name: "John Appleseed")
然而,我正在试验,很惊讶地发现我也能做到这一点;
reference1 = Person(name: "Johnny Appleseed")
我期待代码出错,因为我试图更改常量“名称”属性。我不仅可以更改此属性,还收到消息“Johnny Appleseed 正在初始化”。如何将一个常量初始化两次?
【问题讨论】: