【发布时间】:2010-05-25 20:12:29
【问题描述】:
我有一个带有表格视图的导航控制器。在我读取的大多数教程中,他们通常有一系列视图控制器(或子类)在表视图控制器中存储的视图控制器(或子类),它们在选择表格单元格时使用以推送到导航堆栈。
在我当前的项目中,我有很多从 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];
}
所以我的问题是这种方法是否有可能遭受性能损失?每次用户选择表格单元格时,我都会担心分配和释放内存。另一方面,由于我可能会拥有大量数据,因此我不想通过将这些数据存储在控制器数组中来重复这些数据。
我总是可以让我的单身人士准备视图控制器并存储它们,而不仅仅是原始数据。但是我觉得模型总是隐含在控制器中有点奇怪。有没有一种独立于控制器知识存储模型的正确方法?
你会如何处理这种情况?
提前致谢。
【问题讨论】:
标签: iphone model-view-controller uitableview navigationcontroller