67c*_*ies 45 reference weak-references objective-c swift
在Objective C中,您可以将属性定义为具有强引用或弱引用,如下所示:
@property(strong)...
@property(weak)...
这怎么做得很快?
Kaa*_*glu 63
直接来自Swift语言指南:
class Person {
    let name: String
    init(name: String) { self.name = name }
    var apartment: Apartment?
    deinit { println("\(name) is being deinitialized") }
}
class Apartment {
    let number: Int
    init(number: Int) { self.number = number }
    weak var tenant: Person?
    deinit { println("Apartment #\(number) is being deinitialized") }
}
默认情况下属性很强.但是看看"公寓"这个类的租户属性,它被宣称为弱者.您还可以使用unowned关键字,该关键字转换为Objective-C中的unsafe_unretained
https://itunes.apple.com/tr/book/swift-programming-language/id881256329?mt=11
CW0*_*007 10
默认情况下属性很强,但如果你想要一个弱属性,你可以:
    weak var tenant: Person?
资料来源:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AutomaticReferenceCounting.html
这是一个更重要的评论,但我无法适应。
如果你这样做
weak let name : SomeClass
它将给出以下错误:
'weak' 必须是可变变量,因为它可能会在运行时改变
你必须做
weak var name : SomeClass
'weak' 变量应该有可选类型 'SomeClass?'
所以你必须这样做:
weak var name : SomeClass?
此外,在 Swift 中,所有弱引用都是非常量的 Optionals(想想 var 与 let),因为当不再有任何东西持有对它的强引用时,该引用可以并且将变为 nil。看这里
作为这种强制性可选化的结果,您总是需要解开它,以便您可以访问它的实际值。