NIB не являются ни контроллером, ни представлением;на NIB ссылается контроллер (UIViewController.nibName) и используется для создания экземпляра представления контроллера.Имя пера по умолчанию - это имя вашего класса контроллера (т. Е. Если вы не установите имя пера, оно автоматически будет искать «MyViewController.nib»).
Если вам нужно написать код, который полностью самСодержит интерфейс, он должен быть в поле зрения.Вероятно, это будет пользовательский элемент управления или набор элементов управления (например, представление палитры цветов).
Вы можете добавить FooView.m, если вам нужно реализовать что-нибудь специфичное для Foo в пользовательском интерфейсе, например пользовательский рисунок./ сенсорная обработка.Кроме того, если вам нужен доступ к подпредставлениям FooView, может быть проще установить их как выходы в FooView (вместо FooController);это означает, что вам не нужно сбрасывать их в viewDidUnload.
Стандартное соглашение об именах - называть его «FooViewController», поскольку оно довольно тесно связано с иерархией UIView (и у вас может быть дополнительный FooController, который исключительноуправляет моделью и, возможно, FooWebController для веб-интерфейса с той же моделью).
В конечном счете, делайте все, что проще в долгосрочной перспективе.Лично я не добавляю дополнительные классы, пока не станет очевидно, что они становятся необходимыми, но я пытаюсь структурировать свой код так, чтобы его можно было легко реорганизовать.После того, как я написал больше кода, у меня появилось лучшее представление о том, как он должен быть структурирован, а также лучшее представление о том, сколько еще работы требуется.Это может означать, что я трачу больше времени на рефакторинг, но это также означает, что я трачу меньше времени на (неправильный) дизайн или на написание классов, которые когда-либо использовались только один раз из-за некоторых архитектурных изменений в будущем.
Надеюсь,это также означает, что релизы выходят из дверей раньше.Это важно.Требования к пользовательскому интерфейсу меняются слишком быстро, чтобы тратить на это много времени;мы собираемся выполнить полную переработку пользовательского интерфейса для одного из наших приложений, чтобы лучше поддерживать iPad и многозадачность.