Файлы Nib (или XIB) не имеют ничего общего с управлением памятью. Они там для удобства. Проще выложить пользовательский интерфейс и связать действия с визуальным инструментом, чем вручную кодировать все маски и действия авторазмера. Тем не менее, вы правы, вы не хотите загружать все ваши представления в память сразу, так как это будет пустой тратой .
Использование нескольких файлов XIB полезно для обеспечения большей структурированности вашего проекта. (В некоторых случаях у вас могут даже быть альтернативные кончики для одного контроллера представления. Хотя общий случай - это соотношение 1: 1.)
Методы addSubview
и presentModalViewController
действительно разные. addSubview
берет вид и добавляет его к данному виду (или выводит его на передний план). Это означает, что вы будете нести ответственность за сохранение контроллера представления, чтобы не происходило странных вещей. Это будет использоваться для представления других представлений в вашем основном представлении, таких как представление сообщения в баннере или тому подобном.
Напротив, presentModalViewController
предназначен для представления одного представления в течение короткого промежутка времени, такого как форма входа в систему или информационный экран. Вы передаете весь контроллер представления по частям и часто вскоре после этого освобождаете контроллер представления. На самом деле, код обычно выглядит так:
SomeViewControllerSubclass *myVC = [[SomeViewControllerSubclass alloc] initWithNibName:@"SomeViewControllerSubclass" bundle:nil];
[self presentViewController:myVC];
[myVC];
Обратите внимание, как мы выпускаем экземпляр SomeViewControllerSubclass
сразу после его представления. Вы не можете сделать это с addSubview
, потому что тогда вы можете остаться с видом без контроллера. Вы должны сохранить его сами.