我的这部分代码发生了一些随机崩溃:
-(void) goBack {
[self performSelectorInBackground:@selector(addActivityIndicator) withObject:nil];
[self.navigationController popViewControllerAnimated:YES];
}
- (void)addActivityIndicator {
@autoreleasepool {
UIActivityIndicatorView *activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
UIBarButtonItem * barButton = [[UIBarButtonItem alloc] initWithCustomView:activityView];
[activityView startAnimating];
self.navigationItem.leftBarButtonItem = barButton;
}
}
当我想退出这些方法所在的屏幕时,另一个 ViewController 必须处理一些数据。为了通知用户正在进行处理,我在导航栏中的左侧按钮中添加了一个活动指示器。
问题是有时我会得到一个exc_bad_access
inaddActivityIndicator
方法。频率非常随机,有时 XCode 在末尾显示错误@autoreleasepool
,有时在行self.navigationItem.leftBarButtonItem = barButton;
我想有时我的 viewController 被破坏但线程仍在运行并尝试访问不再存在的对象的 navigationItem。但我不确定这是否是问题所在,也不知道如何解决。
我在我的项目中使用 ARC,这个问题出现在我测试的所有 iOS 版本中。
拜托,任何人都可以向我解释发生了什么,我该如何解决这个问题?
谢谢。