//循环引用
class Person{
var name : String = ""
var book : Book?
deinit {
print("persion---deinit")
}
}
class Book{
var price : Double = 12.0
weak var owner : Person?
deinit {
print("book---deinit")
}
}
var person : Person? = Person()
person!.name = "dog"
var book : Book? = Book()
book!.price = 10.0
book!.owner = person
person?.book = book;
person = nil
//2. 可选链的使用
class People{
var name : String = ""
var dog : Dog?
}
class Dog{
var weight : Double = 0.0
var toy : Toy?
}
class Toy{
var price : Double = 0.0
func fly() {
print("toy flying")
}
}
let p = People()
p.name = "why"
let d = Dog()
d.weight = 60.0
let t = Toy()
t.price = 10
p.dog = d
d.toy = t
//?. 为可选链 系统会自动判断可选类型是否有值
//如何有值,则解包,如果没有值,则赋值为nil
//注意:可选链获取的值 一定是一个可选类型
if let price = p.dog?.toy?.price {
print(price)
}
p.dog?.toy?.price = 50
swift 可选链 循环引用
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 无主引用以及隐式解析可选属性 两个属性都必须有值,并且初始化完成后永远不会为nil。在这种场景中,需要一个类使用无...
- 本章将会介绍 自动引用计数的工作机制自动引用计数实践类实例之间的循环强引用解决实例之间的循环强引用闭包引起的循环强...
- 自动引用计数 循环引用 swift提供了两种解决方案• weak : 和OC中的__weak一样是一个弱引用....
- Swift 可选类型、隐式可选类型与可选链 在 OC 中 nil 表示一个指向不存在的对象的指针,而 Swift ...