Swift_Learn

闭包引起的循环引用问题

2017-03-16  本文已影响0人  张义飞

闭包的内存管理


class Person: NSObject {
    var name: String?
    var age: Int?
    var changName: (() -> ())?
    
    init(name: String?, age: Int?) {
        self.name = name
        self.age = age
    }
}

let p1 = Person(name: "Bill", age: 15)

p1.changName = { Void in
    print(p1.name ?? "Bill")
}

p1.changName!()

QQ20170316-152929@2x.png

p1.changName = {[weak p1] Void in
    print(p1?.name ?? "Bill")
}

p1.changName!()

QQ20170316-153027@2x.png

*来画个牛逼的图看看

QQ20170316-154213@2x.png

造成循环引用的还有其他几种情况,解决循环引用的方法也不止这一种,有时间写一篇介绍循环引用的文章吧

下节传送门

上一篇 下一篇

猜你喜欢

热点阅读