内存管理器通过iOS Swift

Bộnhớthìcóhạn,nêntrongquátrìnhdev taphảiquảnlíchotốtviệccấpphátvàhuỷbộnhớ,đểtránhtrườnghợp内存泄漏。

Mìnhsẽvídụchocácbạntrườnghợphaygặpphải,khi 2 objectstrỏtớinhau

用户级别为2类,用户为Car,用户级别为sau khi khaibáovàgắncác,实例用户为sg gnn,用户级别为bnng,nh classngưiđuxảyralànósẽko类用户。 注意内存泄漏khi保持周期hìnhthànhdo 2biếnstrongcùngtrởt strongi 1địachỉ。

用户 { 
命名:字符串
让电子邮件:字符串
var car:汽车?
init(名称:字符串,电子邮件:字符串){
self.name =名称
self.email =电子邮件
}
deinit {
打印(“再见\(名称)!”)
}
}
类{
let id:整数
让类型:字符串
var所有者: 用户
init(id:Int,type:String){
self.id = id
self.type =类型
}
deinit {
打印(“再见\(类型)!”)
}
}变量所有者:用户? =用户(名称:“ Vu”,电子邮件:“ vu.vicent@gmail.com”)
var car:汽车? =汽车(id:10,键入:“ Toyota”)
车主?。汽车=汽车
汽车?。所有者=所有者
所有者=无

v keywordyđểbẻvònglặpnàynhưthếnào,chúngtasẽdùng关键字“ weak”trướchàmkhaibáobiến

   var所有者:用户? 

Mộttrườnghợpnữalàchúngta s ddụnggọibiếntrong closuse block

Vídụ:tacó2biếnx,yváigiátrịbanđầu= 2,在ra 2biếnx,y中有1个闭包để。 Sau khi tao xongchúngtagắnx,y = 3,在rlaà2,2中关闭tìlúcnàytagọi闭合tìlại。 Vìnóđgiữ1强引用tới2biếnx,ycủachúngta。

  var x = 2 
var y = 2let someClosure = {[x,y] in
print(“ \(x),\(y)”)
} x = 3
y = 3someClosure()//打印2、2
print(“ \(x),\(y)”)//打印3、3

Chúngtasẽxửlýtiếptrườnghợpnàybằngcáchdùng [weak self] hoặc [ unown self]

 让someClosure = { [弱自我] 
print(“ \(x),\(y)”)
} x = 3
y = 3someClosure()//打印3、3
print(“ \(x),\(y)”)//打印3、3

弱(var,Optional)và无名(let,non-optional)khácnhauởchỗkhibiếnx,ybịnil无人崩溃,nênmìnhkhuyêncácbạnnêndùng弱đểtránhbị崩溃。