iOS 9.1 辅助功能检查器打开时应用程序崩溃

iOS 9.1 Crashes App when Accessibility Inspector is On

我正在使用 HockeyApp 进行崩溃报告。我注意到一个经常发生的崩溃,而且只有 iOS 9.1。当文本字段成为第一响应者时会发生崩溃,这也会触发要设置的 UITableView 委托。起初我很难重现,但现在我可以一直重现。我所要做的就是打开辅助功能检查器,我的应用程序就会崩溃。崩溃的原因是 "Reason: Selector name found in current argument registers: _accessibilitySetRetainedValue:forKey:" 而崩溃是 "SIGSEGV"。关于如何解决这个问题有什么想法吗?

我们 运行 遇到类似的事情,最终是由以下原因引起的:

@property (nonatomic, strong) id<UITableViewDelegate> delegate;
@property (nonatomic, strong) UITableVIew *tableView;

...

self.delegate = newDelegate;
self.tableView.delegate = newDelegate;

原来的委托被释放,这通常不是问题。但据我们所知,当启用可访问性时,其中的某些内容具有对原始委托的 assign 引用,并且当设置新委托时,有一些内容试图清除该引用。哪个不再存在了。

TL;DR:在将新委托分配给表视图之前不要取消分配原始委托:

self.tableView.delegate = newDelegate;
self.delegate = newDelegate;