从nib初始化,但只分配[UIViewController]

时间:2010-04-28 02:29:03

标签: 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 really,
       // `ctrl` is a UIViewControllerDERIVATIVE instance, not just
       // a UIViewController instance.

       bundle:nil] ;

我这样做的原因是它在编写推送模态对话框的代码时非常方便..因为Objective-C不支持< template>。

我的问题是,这样可以吗?我可以[alloc]UIViewController,而真正来自NIB的是{{1}的实例}?或者它会在以后咬我的屁股?

1 个答案:

答案 0 :(得分:2)

您无法分配UIViewController并将其初始化为UIViewControllerDERIVATIVE,因为两个类看到其实例的方式不匹配。

一旦一个实例被一个类分配,该类就有责任对其进行初始化。这是因为在分配实例时会设置实例的类。请参阅NSObject reference详细信息。