Swift中没有了strong
, assign
, copy
关键字,对于所有的class
类型变量都默认采用了strong
类型,如果需要指定使用weak
,则需要添加weak
关键字修饰。
正是由于这种默认的strong
类型,在闭包中会引起循环引用,导致内存无法释放,为了能够在闭包(block
)中正常释放内存,需要对闭包中的self
使用弱引用,也就是不持有self
对象。
如下面的代码中:
class UserInfoViewController {
// ...
private lazy var updateInfoBlock: (Bool)->Void = {
return { succ in
if succ {
self.updateSuccess()
} else {
self.updateFailed()
}
}
}()
// ...
}