class Person {
let name: String
init(name: String) { self.name = name }
var apartment: Apartment?
deinit { print("\(name) is being deinitialized") }
}
class Apartment {
let number: Int
init(number: Int) { self.number = number }
var tenant: Person?
deinit { print("Apartment #\(number) is being deinitialized") }
}
var john: Person?
var number73: Apartment?
john = Person(name: "John Appleseed")
number73 = Apartment(number: 73)
john?.apartment?.tenant?.name
john!.apartment = number73
number73!.tenant = john
//john?.apartment = number73
//number73?.tenant = john
john?.apartment?.tenant?.name
看来john?.apartment = number73
和john!.apartment = number73
都工作,什么是这两者的差异,在这种情况下,哪一个是首选?非常感谢。
可能重复[字符串有什么区别?和字符串! (两种创建可选变量的方法)?](http://stackoverflow.com/questions/24083842/what-is-the-difference-between-string-and-string-two-ways-of-creating-an- OPTI) –