所以我现在在我的代码中执行此操作:
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}的实例}?或者它会在以后咬我的屁股?
答案 0 :(得分:2)
您无法分配UIViewController
并将其初始化为UIViewControllerDERIVATIVE
,因为两个类看到其实例的方式不匹配。
一旦一个实例被一个类分配,该类就有责任对其进行初始化。这是因为在分配实例时会设置实例的类。请参阅NSObject reference详细信息。