• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在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也行)

 

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

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
swiftbannerview广告轮播图发布时间:2022-07-13
下一篇:
Swift之String与NSString的区别,以及各自的使用场景发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap