Swift解决闭包的循环引用方法

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()

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容