Таким образом, я делаю это в своем коде теперь:
UIViewController* ctrl =
[[UIViewController alloc] // i'm alloc'ing a UIViewController...
initWithNibName:@"TheNibName" // But this NIB has, within
// interface builder, a link to "UIViewControllerDERIVATIVE". So really,
// `ctrl` is a UIViewControllerDERIVATIVE instance, not just
// a UIViewController instance.
bundle:nil] ;
Причина я делаю это, является этим, делает серьезное удобство в записи некоторого кода, который продвигает модальные диалоговые окна на.. так как Objective C не поддерживает <обрабатывают по шаблону>.
Мой вопрос, это в порядке?? Могу я [alloc]
a UIViewController
только, в то время как действительно то, что выходит из NIB, является экземпляром UIViewControllerDERIVATIVE
? Или это укусит меня в заднице позже?
Вы не можете выделить UIViewController
и инициализировать его как UIViewControllerDERIVATIVE
, потому что будет несоответствие между тем, как два класса видят свои экземпляры.
После того, как экземпляр был выделен классом, именно класс несет ответственность за его инициализацию. Это связано с тем, что класс экземпляра устанавливается при выделении экземпляра. См. ссылку на NSObject для более подробной информации.