美文网首页
<iOS 实践经验>判断循环引用的小技巧

<iOS 实践经验>判断循环引用的小技巧

作者: 貘鸣 | 来源:发表于2018-01-04 18:05 被阅读14次

    在 swift 中经常使用 Closures, 但有的时候使用 Closures 会造成一些不可避免的问题, 比如没有使用 [weak self] 导致的循环引用问题. 即在 Closures 中持有 self 的强引用, 而 self 又对该 Closures 的拥有者有同样的强引用, 这样一来就会造成一个引用循环. 有时在无意间就会出现这个问题.

    实际测试的过程中有如下的办法来检测循环引用:

    1. 使用自带的 Instruments 工具, 利用 Leak 配置进行检测.
    2. 在每个 Closure 使用的时候如果要用 self, 都加上 [weak self]
    3. 在每个对象的 deinit 中打印信息, 如果在应当销毁的时候没调用 deinit, 则证明该对象被循环引用了(特别是在从一个控制器中建立了另外一个控制器然后 push 到导航栈顶的这种场景下, 本条办法尤其简单有效, 因为如果出栈后的控制器没有被释放, 可能会导致很多资源都没有被释放, 而打印一条信息可以清晰看到这个控制器是否被销毁了.).

    相关文章

      网友评论

          本文标题:<iOS 实践经验>判断循环引用的小技巧

          本文链接:https://www.haomeiwen.com/subject/jkoigxtx.html