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) –