我创建了一个Master-Detail-Application,它使用一个DetailViewController
和多个 TableViewDataSource。每次用户触摸一个项目时,我都会检查项目类并为其选择正确的 TableSource。像这样:
if ([_detailItem isKindOfClass: [cAdress class]]) {
self.dataSource = [[AddressDetailTableSource alloc] init];
((AddressDetailTableSource *) dataSource).current = _detailItem;
} else if ([_detailItem isKindOfClass: [cActivities class]]) {
self.dataSource = [[ActivityDetailTableSource alloc] init];
((ActivityDetailTableSource *) dataSource).current = _detailItem;
}...
有时我会更深入地了解细节,并DetailView
在当前的DetailView
. 我经常用一些不同的观点来做这件事。在 MasterView 中选择一个项目会导致应用程序返回到第一个 DetailView ( popToRootViewController
)。我现在特别对一种观点有疑问。当此视图位于顶部并且我在 中选择一个项目时MasterView
,我的应用程序崩溃。NSZombies
我发现它仍然尝试使用错误的数据源构建表。或者至少它试图titleForHeaderInSection
在错误的数据源上调用“”。错误信息是:
[ItemDetailTableSource tableView:titleForHeaderInSection:]:message sent to deallocated instance...
错误只发生在这个特定的 TableSource 上,我也同样对待。
谁能帮我摆脱这个问题?
任何帮助表示赞赏!