2010-07-27 4 views
0

J'ai une classe de base appelée ModelBase et j'ai une classe dérivée appelée "Person". maintenant dans la méthode d'initialisation de la personne, j'ai quelque chose commeAffectation d'un pointeur de classe de base à la classe dérivée dans l'objectif c

-(Person*) init { 
    if(self = [super init]) 
     return self; 

    return nil; 
} 

Cependant, Objective C se plaint types Objective-C 'initialisation incompatibles struct ModelBase *', prévu 'Personne struct *. Je n'initialise que self avec [super init] qui initialise un pointeur de classe de base vers une classe dérivée.

Qu'est-ce qui me manque?

+0

Quel est votre tête ressemble? – jessecurry

Répondre

5

Avez-vous déclaré votre méthode init de ModelBase pour retourner (ModelBase *)? Si c'est le cas, remplacez-le par return (id) à la place. Vous remarquerez que la plupart des initialiseurs de Cocoa retournent (id) pour cette raison.

Au lieu de

- (ModelBase*)init; 

vous voulez

- (id)init; 
+0

Réponse parfaite! – Mugunth

Questions connexes