Когда использовать несколько перьев? - PullRequest
3 голосов
/ 27 июня 2011

Допустим, у моего приложения есть 6 окон, 1 окно - это главное окно, а остальные 5 - для настроек, оценок, статистики и т. Д.

Так что, если я прав, несколько перьев используются из-за управления памятью?Поэтому, если я помещу все 6 представлений в один файл пера, при загрузке приложения оно загрузит все 6 представлений одновременно и займет много памяти, но если я использую 6 наконечников для 6 представлений, при запуске приложение загрузит только первое представлениеи когда я нажимаю в примере «Опции», он загружает Options.nib и отображает представление.

Есть ли еще причины использовать несколько перьев вместо нескольких видов в одном перо?

Я прав?И как мне узнать, когда использовать addSubview или presentModalViewController?В чем основное отличие, когда я использую эти два метода для переключения представлений?

Ответы [ 2 ]

1 голос
/ 27 июня 2011

Файлы Nib (или XIB) не имеют ничего общего с управлением памятью. Они там для удобства. Проще выложить пользовательский интерфейс и связать действия с визуальным инструментом, чем вручную кодировать все маски и действия авторазмера. Тем не менее, вы правы, вы не хотите загружать все ваши представления в память сразу, так как это будет пустой тратой .

Использование нескольких файлов XIB полезно для обеспечения большей структурированности вашего проекта. (В некоторых случаях у вас могут даже быть альтернативные кончики для одного контроллера представления. Хотя общий случай - это соотношение 1: 1.)

Методы addSubview и presentModalViewController действительно разные. addSubview берет вид и добавляет его к данному виду (или выводит его на передний план). Это означает, что вы будете нести ответственность за сохранение контроллера представления, чтобы не происходило странных вещей. Это будет использоваться для представления других представлений в вашем основном представлении, таких как представление сообщения в баннере или тому подобном.

Напротив, presentModalViewController предназначен для представления одного представления в течение короткого промежутка времени, такого как форма входа в систему или информационный экран. Вы передаете весь контроллер представления по частям и часто вскоре после этого освобождаете контроллер представления. На самом деле, код обычно выглядит так:

SomeViewControllerSubclass *myVC = [[SomeViewControllerSubclass alloc] initWithNibName:@"SomeViewControllerSubclass" bundle:nil];
[self presentViewController:myVC];
[myVC];

Обратите внимание, как мы выпускаем экземпляр SomeViewControllerSubclass сразу после его представления. Вы не можете сделать это с addSubview, потому что тогда вы можете остаться с видом без контроллера. Вы должны сохранить его сами.

1 голос
/ 27 июня 2011
  1. Вы правы насчет памяти. Все виды пера загружаются одновременно в память. Вы можете не нуждаться в них сразу. Так что в этом случае вы тратите впустую память. Это может даже привести к сбою приложения, если у вас много просмотров.

  2. Добавление отдельных перьев в целом приводит к более структурированному коду. Нет логической связи между настройками и оценкой. Поэтому у вас должны быть отдельные классы и перья для них. Если вы этого не сделаете, у вас может быть неуправляемый код, который потребует больше времени на обслуживание и изменение.

...