在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在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也行)
这样即可避免循环引用的问题。
|
请发表评论