2010-04-28 3 views
1

Je fais cela dans mon code maintenant:Init de pointe, mais alloc seulement [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] ; 

La raison pour laquelle je fais cela, il fait une pratique massive écrire un code qui pousse modale des boîtes de dialogue sur .. depuis Objective-C ne supporte pas < modèle >.

Ma question est, est-ce correct ?? Puis-je [alloc] un UIViewController seulement, alors que vraiment ce qui sort d'un NIB est une instance de UIViewControllerDERIVATIVE? Ou va-t-il me mordre dans le cul plus tard?

Répondre

2

Vous ne pouvez pas affecter un UIViewController et lsinitialisez comme UIViewControllerDERIVATIVE, car il y aura un décalage entre la façon dont les deux classes voient leurs instances.

Une fois qu'une instance a été allouée par une classe, il est de la responsabilité de la classe de l'initialiser. C'est parce que la classe de l'instance est définie lorsque l'instance est allouée. Voir NSObject reference plus de détails.

+0

Oui, je l'ai découvert en réalité, car les membres qui sont dans 'UIViewControllerDERIVATIVE' ne reçoivent pas réellement alloc'd. – bobobobo

Questions connexes