我创建了一个 Master-Detail-Application ,它使用一个DetailViewController
和多个TableViewDataSources。每次用户触摸某个项目时,我都会检查项目类并为其选择正确的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
,它仍然试图使用错误的DataSource构建表。或者至少它试图在错误的DataSource上调用“titleForHeaderInSection
”。错误消息是:
[ItemDetailTableSource tableView:titleForHeaderInSection:]:message sent to deallocated instance...
错误只发生在这个特定的TableSource上,我也同样对待它。
任何人都可以帮助我摆脱这个问题吗?
感谢任何帮助!
答案 0 :(得分:0)
我认为您的应用程序正在尝试使用已释放的实例访问数据源,您最好为每个tableView创建单独的类,它将简化您的工作,总是尝试对类进行模块化,而不是尝试将所有内容放在一个类中。