我有一个带有表格视图的导航控制器。在我读取的大多数教程中,他们通常有一系列视图控制器(或子类)在表视图控制器中存储的视图控制器(或子类),它们在选择表格单元时,它们用于推送到导航堆栈。
在我当前的项目中,我有很多从 XML 文件加载的数据。这些数据集中保存在单例类中。如果你愿意,这是我的“模型”。
因此,在我的 tableview 控制器中,我没有视图控制器数组(当视图控制器已经存储在其他地方时,我不想将冗余数据存储在视图控制器中)。相反,我从单例访问数据并创建一个视图控制器,使用适当的数据对其进行初始化,然后在每次选择表格单元格时将其推送到导航堆栈上。
这是 tableview:didselectrowatindexpath: 方法的示例:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
DetailViewController *nextController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
// Here I setup some data from the singleton (just an example)
nextController.title = [mySingleton.titles objectAtIndex:[indexPath row]];
[self.navigationController pushViewController:nextController animated:YES];
[nextController release];
}
所以我的问题是这种方法是否有可能遭受性能损失?我担心每次用户选择表格单元格时分配和释放内存。另一方面,由于我可能会拥有大量数据,因此我不想通过将这些数据存储在控制器数组中来重复这些数据。
我总是可以让我的单身人士准备视图控制器并存储它们,而不仅仅是原始数据。但我觉得模型总是隐含在控制器中有点奇怪。有没有一种独立于控制器知识存储模型的正确方法?
您将如何处理这种情况?
提前致谢。