Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 导航控制器:存储控制器与模型_Iphone_Model View Controller_Uitableview_Navigationcontroller - Fatal编程技术网

Iphone 导航控制器:存储控制器与模型

Iphone 导航控制器:存储控制器与模型,iphone,model-view-controller,uitableview,navigationcontroller,Iphone,Model View Controller,Uitableview,Navigationcontroller,我有一个带有表视图的导航控制器。在我读过的大多数教程中,它们通常有一个视图控制器数组(或的子类)存储在本地的表视图控制器中,当选择表单元格时,它们使用该数组推送到导航堆栈上 在我当前的项目中,我有很多从XML文件加载的数据。这些数据保存在单例类的中心。如果你愿意的话,这是我的“模型” 因此,在我的tableview控制器中,我没有视图控制器阵列(我不想在视图控制器中存储冗余数据,因为它已经存储在其他位置)。相反,我从singleton访问数据并创建一个视图控制器,用适当的数据初始化它,然后在每次

我有一个带有表视图的导航控制器。在我读过的大多数教程中,它们通常有一个视图控制器数组(或的子类)存储在本地的表视图控制器中,当选择表单元格时,它们使用该数组推送到导航堆栈上

在我当前的项目中,我有很多从XML文件加载的数据。这些数据保存在单例类的中心。如果你愿意的话,这是我的“模型”

因此,在我的tableview控制器中,我没有视图控制器阵列(我不想在视图控制器中存储冗余数据,因为它已经存储在其他位置)。相反,我从singleton访问数据并创建一个视图控制器,用适当的数据初始化它,然后在每次选择表单元格时将其推送到导航堆栈上

这是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];
}
所以我的问题是,这种方法是否有可能导致性能损失?我担心每次用户选择一个表单元格时都会分配和释放内存。另一方面,由于我可能会有很多数据,我不想通过将这些数据存储在控制器阵列中来重复这些数据

我总是可以让我的单身汉准备视图控制器并存储它们,而不仅仅是原始数据。但是我觉得有点奇怪,模型总是隐式地存在于控制器中。是否有适当的方法将模型独立于控制器知识进行存储

你将如何处理这种情况

提前谢谢。

你的方法是正确的。 在这一行代码中:

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类中