Swift闭包循环引用

在swift中依然存在闭包循环引用的情况,和OC一样,在Block中self造成的循环引用并不是必然的,有时候也不会存在循环引用问题。

在swift中循环引用的解决方法

1.[weak self] 这种方式,self是可选项,如果self已经销毁,则为nil。

2.[unowned self]这种方式,self不是可选项,如果self销毁了,则出现野指针访问。(unowned相当于assign)

在OC中循环引用的解决方式

1.__weak typeof(self) weakSelf 如果self已经被释放,则为nil

2.__unsafe_unretained typeof(self) weakSelf 如果self已经被释放,则出现野指针访问

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

推荐阅读更多精彩内容

  • 在swift中依然存在闭包循环引用的情况,和OC一样,在Block中self造成的循环引用并不是必然的,有时候也不...
    落寒z阅读 348评论 0 2
  • 闭包表达式默认会对用到的外层对象产生额外的强引用(对外层对象进行了retain操作),保证执行代码时变量还在。 循...
    来金德瑞阅读 1,679评论 0 1
  • 无论OC中的Block还是Swift中的闭包Closure,经常因为使用不当从而造成循环引用从而导致内存泄漏,如何...
    Tony_Yang阅读 4,766评论 2 21
  • 2017年初,院上头下来一份文件,因为县里精神院的一医师突然失踪,故将我临时调去县里,处理精神病院事务。 说是临时...
    怪奇惊选集阅读 1,391评论 8 13