Objective c 从nib初始化,但仅限alloc[UIViewController]

Objective c 从nib初始化,但仅限alloc[UIViewController],objective-c,Objective C,所以我现在在我的代码中这样做: UIViewController* ctrl = [[UIViewController alloc] // i'm alloc'ing a UIViewController... initWithNibName:@"TheNibName" // But this NIB has, within // interface builder, a link to "UIViewControllerDERIVATIVE". So

所以我现在在我的代码中这样做:

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]
一个
UIViewController
,而从NIB中产生的实际上是
UIViewControllerDERIVATIVE
的一个实例吗?或者稍后它会咬我的屁股吗?

您不能分配
UIViewController
并将其初始化为
UIViewControllerDelivative
,因为这两个类查看其实例的方式不匹配


一旦一个实例被一个类分配,初始化它就是这个类的责任。这是因为实例的类是在分配实例时设置的。查看更多详细信息。

是的,我实际上发现了这一点,因为
UIViewControllerDERIVATIVE
中的成员实际上没有被分配。