zoukankan      html  css  js  c++  java
  • Swift代理造成内存泄漏的解决办法

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

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

  • 相关阅读:
    C# WinForm程序退出的方法
    SpringCloud 微服务框架
    idea 常用操作
    Maven 学习笔记
    SpringBoot 快速开发框架
    html 零散问题
    Java方法注释模板
    Seating Arrangement
    hibernate 离线查询(DetachedCriteria)
    hibernate qbc查询
  • 原文地址:https://www.cnblogs.com/yajunLi/p/6478275.html
Copyright © 2011-2022 走看看