美文网首页
定时器的回调方法在ios9系统上崩溃的问题

定时器的回调方法在ios9系统上崩溃的问题

作者: 飞扬你我 | 来源:发表于2019-03-25 16:25 被阅读0次

在最近的bugly系统上出现了如下的问题

在通过查找后发现问题主要出现在ios9的系统上

原因是 self.timer = [NSTimer scheduledTimerWithTimeInterval:5 repeats:YES block:^(NSTimer * _Nonnull timer) {

}];

在保存草稿箱的时候使用了上面的定时器方法,而ios9以上的系统对内存回收机制做了修改,当对象函数运行中对对象本身进行释放时,会到函数运行结束完后才真正释放,ios9以前的系统会在函数运行中立即释放对象,不会等到函数运行结束,如果该函数之后对对象进行操作就会crash。


修改成下面的方法控制器就会持有定时器,不会被自动释放

self.timer = [NSTimer scheduledTimerWithTimeInterval:5  target:self selector:@selector(doSavePosts) userInfo:nil  repeats:YES];


但需要在离开的时候实现下面的方法将定时器进行释放

    if (self.timer && [self.timer isValid])

    {

        [self.timer invalidate];

        self.timer=nil;

    }

相关文章

网友评论

      本文标题:定时器的回调方法在ios9系统上崩溃的问题

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