当2个对象的存储属性互相引用对方的时候,一个对象释放的前提是对方先释放,另一个对象释放的前提也是对方先释放,这样做会导致类似于死锁一样的状态,最后导致双方都无法释放,导致内存泄露,这种现象就是强引用循环。
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 Department { var no:Int var name:String var manager:Employee? init(no:Int,name:String){ self.no = no self.name = name } deinit{ println("Department对象已经被析构") } }
本文出自 “平凡之路” 博客,请务必保留此出处http://linjohn.blog.51cto.com/1026193/1623801
原文:http://linjohn.blog.51cto.com/1026193/1623801