码迷,mamicode.com
首页 > 编程语言 > 详细

Swift-08-闭包引起的循环强引用

时间:2016-01-15 20:27:05      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:

  循环强引用还会发生在当你将一个闭包赋值给类实例的某个实例,并且这个闭包体中又实用了这个类实例。这个闭包体重可能访问了实例的某个属性,例如self.**,或者闭包中调用了实例的某个方法,例如self.**,这两种情况都导致闭包“捕获”self,从而产生了循环强引用。

  循环强引用的产生,是因为闭包和类相似,都是引用类型。当你把闭包赋值给某个属性时,你也把一个引用赋值给了这个闭包。实质上,这跟之前的问题一样,两个强引用让彼此一直有效。但是,和两个类实例不同,这次一个是类实例,另一个是闭包。

  Swift提供了一种优雅的方法来解决这个问题,称之为闭包捕获列表。

Swift-08-闭包引起的循环强引用

标签:

原文地址:http://www.cnblogs.com/tanglimei/p/5134076.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!