Swift闭包和OC的block一样,只要是内部的变量都会加上一个strong的强引用
/*解决循环引用三种方法
1.
unowned var weakself = self
2.
weak var weakself = self (此时weakself是可选项,要!解包)
3.捕获列表(可以在调用"闭包"的时候,在我们的形参列表前面通过[]指定捕获的对象,告诉系统如何处理这些捕获的值!!!)
block = { [unowned self]() -> Void in
self.view.backgroundColor = UIColor.redColor()
}
应用场景:
什么时候用weak
| - 当被保存的对象有可能提前释放时,用weak
什么时候用unowned
| - 当被保存的对象使用时不会提前被释放,就用unowned
*/
block = { [unowned self]() -> Void in
self.view.backgroundColor = UIColor.redColor()
}