UIViewController退出不走dealloc

2021-11-30  本文已影响0人  鬼才冯三郎

原文来自链接:http://events.jianshu.io/p/97a85c954fb9
可能的原因:

1.ViewController中存在NSTimer
如果你的ViewController中有NSTimer,那么你就要注意了,因为当你调用

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

self.playerTimer = [NSTimerscheduledTimerWithTimeInterval:1target:selfselector:@selector(playProgressAction)userInfo:nilrepeats:YES];
使用后记得销毁
[_playerTimerinvalidate];
_playerTimer =nil;

2.协议delegate 应该使用weak修饰,否则会引起循环引用 不能释放内存
@property (nonatomic,weak)id<ceshiDelegate>delegate;

3.使用到block的地方,block回调中不能直接使用self 否则可能引起循环引用。

__weaktypeof(self) weakSelf =self;
_audioStream.onCompletion=^(){
[weakSelf nextButtonAction];
};
4.controller中子view引用Controller,此时应该在子view中用weak修饰controller

@property (nonatomic, weak) UIViewController *controller;

上一篇下一篇

猜你喜欢

热点阅读