您好,登錄后才能下訂單哦!
Swift提供了兩種方法來解決強引用循環問題:弱引用和無主引用
一、弱引用
弱引用允許循環引用中的一個對象不采用強制方式引用另外一個對象,這樣就不會引起強引用循環的問題,弱引用適用于引用對象可以沒有值的情況,因為若引用可以沒有值,必須將每一個若引用聲明為可選類型,使用關鍵字weak聲明若引用對象
class Employee { var no:Int var name:String var job:String var salary:Double var dept:Department? init(no:Int,name:String,job:String,salary:Double){ self.no = no self.name = name self.job = job self.salary = salary } deinit{ println("Employee對象已經被析構") } }
class Depatment { var no:Int var name:String weak var manager:Employee? init(no:Int,name:String){ self.no = no self.name = name } deinit{ println("Department對象已經被析構") } }
二、無主引用
無主引用與弱引用一樣,允許循環引用中的一個對象不采用強引用的方式引用另外一個對象,這樣就不會引起強引用循環的問題,無主引用對象適用于引用對象永遠有值的情況,它總是被定義為非可選類型,使用關鍵字unowned表示無主引用
class Depatment { var no:Int var name:String unowned var manager:Employee init(no:Int,name:String){ self.no = no self.name = name } deinit{ println("Department對象已經被析構") } }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。