14.7 Swift中unowned解决循环强引用

/**

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

相关文章

Swift 正式开源!Swift 团队很高兴宣布 Swift 开始开源新篇章。自从苹果发布 Swfit 编程语言,就成为了...
快,快,快!动动您的小手,分享给更多朋友! 苹果去年推出了全新的编程语言Swift,试图让iOS开发更简单...
开发者(KaiFaX) 面向开发者、程序员的专业平台! 和今年年初承诺的一样,苹果贴出了Swift语言的源码,...
本文由@Chun发表于Chun Tips :http://chun.tips/blog/2014/12/11/shi-yong-swift-gou-jian-zi-ding-yi...
本文由CocoaChina译者leon(社区ID)翻译 原文:THE RIGHT WAY TO WRITE A SINGLETON 在之前的帖子里聊过...
本文由CocoaChina译者leon(社区ID)翻译 原文:THE RIGHT WAY TO WRITE A SINGLETON 在之前的帖子里聊过...