/**
14.4-weak引用.mp4
*/
@H_502_18@/**
(4)weak引用(弱引用)
*/
@H_502_18@class Ref {
deinit {
print("Ref deinit!")
}
@H_502_18@func test() -> Void {
print("test")
}
}
@H_502_18@ @H_502_18@/**
跟弱引用对应的就是强引用。
*/
var strongRef = Ref.init() // 引用计数retainCount 1
@H_502_18@var strongRef1 = strongRef // 引用计数retainCount 2
@H_502_18@// 这就是弱引用,weak引用是非常安全的引用方式
weak var weakRef = Ref.init()
@H_502_18@// 后面会自动置nil
@H_502_18@ @H_502_18@// 弱引用,是一个可选类型。
weak var weakRef1: Ref? = Ref.init()
@H_502_18@// 不建议这样子直接解包
// fatal error: unexpectedly found nil while unwrapping an Optional value
// weakRef1!.test()
@H_502_18@ @H_502_18@// 访问可选类型的时候用隐式解包,
if let wr = weakRef1 {
@H_502_18@// wr存在,才用它
wr.test()
}
@H_502_18@ @H_502_18@/**
我可以告诉大家的是,在Swift中我们平时用不着 weak关键字。
但是在某些场合下我们会使用它,会在接下来的课程讲解。
*/