zoukankan      html  css  js  c++  java
  • 循环引用不释放控制器

    理论不介绍,直接上干货~

    一、检测

    检测控制器是否被释放,可以检测是否调用了-dealloc生命周期方法。

    二、修复

    1、因为NSTimer没有释放的原因
    避免方式:记得将NSTimer对象timerObj失效与置空。
    [self.timerObj invalidate];
    self.timerObj = nil;
     
    2、成为别人的委托对象,却把自己给搭进去出不来
    避免方式:声明delegate时请用assign(MRC)或者weak(ARC)。
     
    3、block环
    避免方式:
    【1】如果是属性
    @property (nonatomic, assign) NSInteger *age;

    在block外面:__weak typeof(self) weakSelf = self;

    在block里面:weakSelf.age = 18;
     
    【2】如果是成员变量
    {
        NSString *_name;
    }
    在block外面:__weak typeof(self) weakSelf = self;
    在block里面:__strong typeof(weakSelf) strongSelf = weakSelf;
                           strongSelf->_name = @“Ming”;
  • 相关阅读:
    几种芯片封装
    Finder 快捷键
    Linux dnsmasq 服务
    java: private, protected, public
    java final
    Jenkins 搭建
    一款工作记录软件
    MacOS 修改主机名
    Ubuntu 静态IP
    adb tcp 调试
  • 原文地址:https://www.cnblogs.com/cchHers/p/7325186.html
Copyright © 2011-2022 走看看