2010-04-28 28 views
1

所以我在我的代碼現在這樣:初始化從筆尖,但僅頁頭[UIViewController中]

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的實例嗎?或者它會在晚些時候把我咬到屁股裏?

回答

2

您不能分配UIViewController並將其初始化爲UIViewControllerDERIVATIVE,因爲兩個類之間的方式會有所不同。

一旦一個實例被一個類分配完畢,類就有責任對它進行初始化。這是因爲在分配實例時設置實例的類。詳見NSObject reference

+0

是的,我真的發現了這一點,因爲'UIViewControllerDERIVATIVE'中的成員實際上並沒有獲得alloc'd。 – bobobobo 2010-05-19 14:24:53

相關問題