美文网首页
Swift 避免循环引用

Swift 避免循环引用

作者: 轻轻语焉 | 来源:发表于2020-03-18 20:08 被阅读0次

1、block

self.dataBack = { [weak self] (result) in 

self?.dataArr = result as! [String]

   }

    block 通过 [weak self] 将self的强引用改为弱引用

2、delegate

一般声明delegate 属性的时候,用weak修饰。tableView的delegate实现也是如此

weak open var delegate: UITableViewDelegate?

1)自定义代理协议的时候,应继承NSObjectProtocol,这时使用weak不会报错。

因为'weak' must not be applied to non-class-bound 'CustomViewDelegate'; consider adding a protocol conformance that has a class bound 

得修饰一个有类绑定的协议

2)@objc 

    声明代理协议的时候,如果前面有@objc关键字的话, 也可以用weak修饰delegate属性

相关文章

  • Swift 避免循环引用

    1、block self.dataBack = { [weak self] (result) in self?.d...

  • Swift--内存管理

    Swift内存管理概述 强引用循环 打破强引用循环 闭包中的强引用循环 Swift内存管理概述 Swift中的AR...

  • Swift中weak与unowned的区别

    在Swift的闭包中为了避免循环引用的问题,通常用[weak self] 或者[unowned self], 前者...

  • Swift中如何避免循环引用

    内存管理中经常会遇到的一个问题便是循环引用。首先,我们来了解一下iOS是如何进行内存管理的。 ARC ARC(Au...

  • __block 和__ weak 的区别

    1:在 block 下循环引用的问题.○ __block 本身并不能避免循环引用,避免循环引用需要在block内部...

  • __block与__weak的真正区别

    block下循环引用的问题 __block本身并不能避免循环引用,避免循环引用需要在block内部把__block...

  • __block和__weak修饰符的区别

    block下循环引用的问题 __block本身并不能避免循环引用,避免循环引用需要在block内部把__block...

  • __block与__weak的区别

    block下循环引用的问题 __block本身并不能避免循环引用,避免循环引用需要在block内部把__block...

  • 循环引用的相关问题

    1、循环引用的种类(1)自循环引用(2)相互循环引用(3)多循环引用 如何破除循环引用?(1)避免产生循环引用(2...

  • Day2

    1 单方向的引用不会产生循环引用。循环引用:闭包引用了self,self引用了闭包。Swift推荐使用解决循环引用...

网友评论

      本文标题:Swift 避免循环引用

      本文链接:https://www.haomeiwen.com/subject/htncyhtx.html