Iphone 导航控制器:存储控制器与模型
我有一个带有表视图的导航控制器。在我读过的大多数教程中,它们通常有一个视图控制器数组(或的子类)存储在本地的表视图控制器中,当选择表单元格时,它们使用该数组推送到导航堆栈上 在我当前的项目中,我有很多从XML文件加载的数据。这些数据保存在单例类的中心。如果你愿意的话,这是我的“模型” 因此,在我的tableview控制器中,我没有视图控制器阵列(我不想在视图控制器中存储冗余数据,因为它已经存储在其他位置)。相反,我从singleton访问数据并创建一个视图控制器,用适当的数据初始化它,然后在每次选择表单元格时将其推送到导航堆栈上 这是tableview:didselectrowatindexpath:方法的示例:Iphone 导航控制器:存储控制器与模型,iphone,model-view-controller,uitableview,navigationcontroller,Iphone,Model View Controller,Uitableview,Navigationcontroller,我有一个带有表视图的导航控制器。在我读过的大多数教程中,它们通常有一个视图控制器数组(或的子类)存储在本地的表视图控制器中,当选择表单元格时,它们使用该数组推送到导航堆栈上 在我当前的项目中,我有很多从XML文件加载的数据。这些数据保存在单例类的中心。如果你愿意的话,这是我的“模型” 因此,在我的tableview控制器中,我没有视图控制器阵列(我不想在视图控制器中存储冗余数据,因为它已经存储在其他位置)。相反,我从singleton访问数据并创建一个视图控制器,用适当的数据初始化它,然后在每次
- (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];
}
所以我的问题是,这种方法是否有可能导致性能损失?我担心每次用户选择一个表单元格时都会分配和释放内存。另一方面,由于我可能会有很多数据,我不想通过将这些数据存储在控制器阵列中来重复这些数据
我总是可以让我的单身汉准备视图控制器并存储它们,而不仅仅是原始数据。但是我觉得有点奇怪,模型总是隐式地存在于控制器中。是否有适当的方法将模型独立于控制器知识进行存储
你将如何处理这种情况
提前谢谢。你的方法是正确的。
在这一行代码中:
nextController.title = [mySingleton.titles objectAtIndex:[indexPath row]];
您不是在“分配和释放”任何数据,而是指针的数据nextController.title
将指向mySingleton.titles
中的某些元素。只要不调用数组上的任何copy
方法,数据就只存在于singleton类中。您的方法是正确的。
在这一行代码中:
nextController.title = [mySingleton.titles objectAtIndex:[indexPath row]];
您不是在“分配和释放”任何数据,而是指针的数据nextController.title
将指向mySingleton.titles
中的某些元素。只要不调用数组上的任何copy
方法,数据就只存在于singleton类中