在最近的bugly系統(tǒng)上出現(xiàn)了如下的問題
在通過查找后發(fā)現(xiàn)問題主要出現(xiàn)在ios9的系統(tǒng)上
原因是?self.timer = [NSTimer scheduledTimerWithTimeInterval:5 repeats:YES block:^(NSTimer * _Nonnull timer) {
}];
在保存草稿箱的時候使用了上面的定時器方法束凑,而ios9以上的系統(tǒng)對內(nèi)存回收機制做了修改芙委,當對象函數(shù)運行中對對象本身進行釋放時佩捞,會到函數(shù)運行結(jié)束完后才真正釋放媚值,ios9以前的系統(tǒng)會在函數(shù)運行中立即釋放對象家破,不會等到函數(shù)運行結(jié)束秘案,如果該函數(shù)之后對對象進行操作就會crash儒将。
修改成下面的方法控制器就會持有定時器卿闹,不會被自動釋放
self.timer = [NSTimer scheduledTimerWithTimeInterval:5? target:self selector:@selector(doSavePosts) userInfo:nil? repeats:YES];
但需要在離開的時候?qū)崿F(xiàn)下面的方法將定時器進行釋放
? ? if (self.timer && [self.timer isValid])
? ? {
? ? ? ? [self.timer invalidate];
? ? ? ? self.timer=nil;
? ? }