iOS--造成dealloc不调用的原因

来源:互联网 发布:网络信息发布软件 编辑:程序博客网 时间:2024/04/29 05:33

1.ViewController中存在NSTimer

[NSTimer scheduledTimerWithTimeInterval:1.0                                  target:self                           selector:@selector(updateTime:)                                userInfo:nil                                 repeats:YES];

2.ViewController中有关的代理,一个比较隐秘的因素,你去找找与这个类有关的代理,有没有强引用属性?比如一个代理的delegate应该是 assign 的现在是retain

3.ViewController中有Block

Block体内使用实例变量也会造成循环引用,使得拥有这个实例的对象不能释放。
例如你这个类叫OneViewController,有个属性是NSString *name; 如果你在block体中使用了self.name,那样子的话这个类就没法释放。
要解决这个问题,MRC下只需

__block Viewcontroller *weakSelf = self;ARC下将block 换为 weak
2 0
原创粉丝点击