在最近的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;
}