Я могу загрузить его просто SomeViewController *view = [[SomeViewController alloc] init]
.
Вы можете, но (IMO) вы не должны. Назначенный инициализатор для UIViewController: -initWithNibName:bundle:
. Вы могли бы реализовать метод -init
в вашем собственном контроллере представления, который вызывает [super initWithNibName:nil bundle:nil]
, но я думаю, что код понятнее, если вы придерживаетесь того же имени.
Кроме того, убедитесь, что вы прочитали документацию для UIViewController, особенно обсуждение, которое гласит:
Если вы укажете nil для параметра nibName, вы должны либо переопределить
метод loadView и создайте свои представления там, или вы должны предоставить
nib-файл в вашем комплекте, чье имя (без расширения .nib)
соответствует имени вашего класса контроллера представления.
Вот почему контроллер представления будет загружать файл .xib, который имеет то же имя, что и класс контроллера представления (или имя, возвращаемое методом -nibName
, как объяснено чуть более подробно в документации).
Короче говоря, UIViewController функционирует именно так, как задокументировано.