我正在使用HockeyApp进行崩溃报告。我注意到经常发生的崩溃,只有iOS 9.1。当文本字段成为第一个响应者并且还触发要设置的UITableView委托时,就会发生崩溃。起初我努力重现,但现在我可以一直重现。我所要做的就是打开辅助功能检查器,我的应用程序将崩溃。崩溃的原因是," Reason:在当前参数寄存器中找到的选择器名称:_accessibilitySetRetainedValue:forKey:"而崩溃是一个" SIGSEGV"。关于如何解决这个问题的任何想法?
答案 0 :(得分:7)
我们碰到了类似的东西,这些东西是由于以下内容造成的:
@property (nonatomic, strong) id<UITableViewDelegate> delegate;
@property (nonatomic, strong) UITableVIew *tableView;
...
self.delegate = newDelegate;
self.tableView.delegate = newDelegate;
原始委托被取消分配,这通常不会成为问题。但据我们所知,当启用辅助功能时,其中的某些内容对原始委托有assign
引用,并且在设置新委托时,会尝试清除该引用。哪个不存在了。
TL; DR:在将新的委托分配给tableview之前,不要取消分配原始委托:
self.tableView.delegate = newDelegate;
self.delegate = newDelegate;