首页 > 编程语言 > 详细

Swift 使用Delegate代理造成内存泄漏的解决办法

时间:2017-02-28 13:47:34      阅读:618      评论:0      收藏:0      [点我收藏+]

在swift中,使用代理 ,可能很多人会这样实现:

1.首先定义一份协议。
protocol ToolProrocol{
   //代理方法
   func didRecieveResults(result:Int)
}

2.定义一个代理属性
//声明代理属性
var delegate : ToolProrocol?

self.delegate?.didRecieveResults(1)

3. 使用时,设置代理和实现
  xxx.delegate = self

  func didRecieveResults(result: Int) {
  }

 

 

但其实,这样会有个隐患问题,那就是内存泄漏!!!

 

解决办法:

在1和2步骤中处理如下:

1.首先定义一份协议。
protocol ToolProrocol:NSObjectProtocol{
   //代理方法
   func didRecieveResults(result:Int)
}

2.定义一个代理属性
//声明代理属性
weak var delegate : ToolProrocol?

 

在申明属性时,添加weak申明弱引用,同时,在定义代理协议时,加上继承 NSObjectProtocol(class也行)

 

这样即可避免循环引用的问题。

 

Swift 使用Delegate代理造成内存泄漏的解决办法

原文:http://www.cnblogs.com/yajunLi/p/6478275.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!