У меня есть навигационный контроллер с табличным представлением. В большинстве учебных пособий, которые я читал, у них обычно есть массив контроллеров представлений (или подклассов), хранящихся локально в контроллере табличных представлений, который они используют для добавления в стек навигации при выборе ячейки таблицы.
В моем текущем проекте у меня есть много данных, которые загружаются из файла XML. Эти данные хранятся в одном классе. Это моя «модель», если хотите.
Так что в моем контроллере табличного представления у меня нет массива контроллеров представления (я не хотел, чтобы избыточные данные сохранялись в моем контроллере представления, когда они уже хранятся в другом месте). Вместо этого я получаю доступ к данным из синглтона и создаю контроллер представления, инициализирую его соответствующими данными и затем помещаю их в стек навигации каждый раз, когда выбирается ячейка таблицы.
Это образец таблицы: 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];
}
Таким образом, мой вопрос заключается в том, может ли этот подход потерять производительность? Я беспокоюсь о выделении и освобождении памяти каждый раз, когда пользователь выбирает ячейку таблицы. С другой стороны, поскольку у меня потенциально может быть много данных, я не хочу повторять эти данные, сохраняя их в массиве контроллеров.
Я всегда мог просто заставить мой синглтон подготовить контроллеры представления и сохранить их вместо просто необработанных данных. Но я нахожу немного странным, что модель всегда неявна в контроллере. Есть ли правильный способ хранения модели независимо от знаний контроллера?
Как бы вы подошли к этой ситуации?
Заранее спасибо.