当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