- 很多时候,我们都需要用到定时器,但是我们使用定时器的时候,稍不注意,就会出现内存泄露的问题,造成的对象无法销毁的问题
- 我们先看一下代码,我们一般是这么来运用定时器的:
- (void)viewDidLoad {
[super viewDidLoad];
[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(update) userInfo:nil repeats:YES];
}
- (void)update
{
static NSInteger num = 0;
num ++;
NSLog(@"%zd",num);
}
- 的确,定时器使用起来非常简单,就是随便的像我上面一样的,写两行代码就搞定,但是里面隐藏的着一个巨大的问题,我们看一下,这个控制器,有没有得到释放。
首先:做一些提前准备,准备三个控制器,让他跳转 <

使用定时器时容易导致内存泄露,因为定时器会强引用持有它的对象,阻止其被销毁。通过创建中间对象并让定时器强引用该对象,而非控制器,可以在控制器释放时解决内存泄露。示例代码展示了如何正确实现这一解决方案。
1171

被折叠的 条评论
为什么被折叠?



