加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

14.7 Swift中unowned解决循环强引用

发布时间:2020-12-14 06:31:04 所属栏目:百科 来源:网络整理
导读:/** ( 7 ) unowned 解决循环强引用 仍然使用官方的例子来给大家讲解 */ class Customer { let name: String // 可选值,对于人来说信用卡可有可无 var card: CreditCard ? init (name: String ) { self . name = name } deinit { print ( " ( name ) is

/**

7unowned 解决循环强引用

仍然使用官方的例子来给大家讲解

*/

class Customer {

let name: String

// 可选值,对于人来说信用卡可有可无

var card: CreditCard?

init(name: String) {

self.name = name

}

deinit {

print("(name) is being deinitialized")

}

}

class CreditCard {

let number: UInt64

// 对于信用卡来说,一定要有主人,而且是唯一的 unowned(非可选类型),根据题意不要用weak修饰了。

unowned let customer: Customer

init(number: UInt64,customer: Customer) {

self.number = number

self.customer = customer

}

deinit {

print("Card #(number) is being deinitialized")

}

}

/**

unowned 去掉后就是变成了循环强引用了。

不会被销毁,没有出现打印

加上 unowned 打印出现

John Appleseed is being deinitialized

Card #12344556233 is being deinitialized

*/

var john: Customer?

john = Customer.init(name: "John Appleseed")

john!.card = CreditCard.init(number: 1234_4556_233,customer: john!)

john = nil

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读