大佬教程收集整理的这篇文章主要介绍了swift – 传递属于self的函数在不在闭包中时会导致保留周期吗?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我直接传递属于self的函数,它会导致保留周期吗?或者它是否需要嵌套在闭包内以削弱自我?
直接通过
UIView.animateWithDuration(0.3,delay: 0.0,usingSpringWithDamping: 0.7,initialSpringVeLocity: 0.1,options: .CurveEaSEOut,animations: self.view.layoutIfNeeded,// does this cause retain cycle? completion: nil)
包裹在一个封闭物中
UIView.animateWithDuration(0.3,animations: { [uNowned self] in self.view.layoutIfNeeded() },completion: nil)
这有两个原因不能创造一个循环.首先,没有“循环”.系统将引用某些东西(更多内容在一秒钟内),当然.但在哪里引用“引用那些东西的东西?”更清楚地说,即使动画系统引用自我,自我引用动画系统怎么样?没有循环.
没有循环的另一个原因是你无论如何也不会将自己传递给动画系统.你传递的self.view.layoutIfNeeded.在Swift中,这相当于:
UIView.layoutIfNeeded(self.view)
你不是在这里传递自己.你正在传递一个观点.现在动画系统几乎肯定会在动画完成之前保存对该视图的引用,但这很好.那还不是一个循环.
以上是大佬教程为你收集整理的swift – 传递属于self的函数在不在闭包中时会导致保留周期吗?全部内容,希望文章能够帮你解决swift – 传递属于self的函数在不在闭包中时会导致保留周期吗?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。