1、加一个标记,表示里面用到的self都是弱引用
test4 {[weak self] (name)->() in
//self?表示如果对象一旦被释放了,就不再访问其属性或者方法
print(self?.view)
}
2、OC中的传统的方法
//由于weak修饰的属性在运行时可能会改变所以要用var,因为weak所指向的对象被释放之后,weakSelf就变成了nil
weak var weakSelf = self
test4 { (name)->Void in
//weakSelf?表示对象一旦被释放,不再去访问其属性或者方法
print(weakSelf?.view)
}
3、在Swift中也是加一个标记,[unowed self] 表示闭包中的self都是assign的,如果self被释放之后,闭包中的self的地址不会修改,会出现野指针错误
test4 {[unowned self] (name)->() in
print(self.view)
}