2011-06-14 3 views
1

Je possède ce code:'types Incompatible objectif-c assignant' erreur

.h:

@interface ColorPickerView : UIViewController { 

HSBEditView *hsbEditView; 

} 

.m:

hsbEditView = [[HSBEditView alloc] initWithFrame:CGRectMake(0, 0, 280, 46) H:h S:s B:b]; 

Comme je tape, cette méthode initWithFrame est un suggéré et j'ai appuyé sur l'onglet pour le remplir correctement.

Le problème est que la dernière ligne là-bas, celui du fichier m, obtient cet avertissement:

Incompatible objective-c types assigning '*', expected '*' 
Incompatible objective-c types assigning 'struct HEXEditView *', expected 'struct HSBEditView *' 

HEXEditView est une autre vue que j'ai, mais comme vous pouvez le voir clairement, il n'y a pas mention dans cette ligne.

EDIT:

Mis en œuvre comme ceci:

-(HSBEditView *)initWithFrame:(CGRect)frame H:(float)hue S:(float)saturation B:(float)brightness { 

    [super initWithFrame:frame]; 

... 

    return self; 
} 

EDIT: Solution trouvée! J'ai dû les renommer en quelque chose de légèrement différent, parce que cette méthode avait le même nom que la méthode init dans une autre classe. J'aimerais quand même savoir comment résoudre correctement ce problème (s'il y a un autre moyen), car renommer la méthode init n'est pas idéal?

+1

Comment implémentez-vous 'initWithFrame: H: S: B:'? –

Répondre

3

Pour éviter de renommer la méthode, vous pouvez lancer le alloc:

hsbEditView = [(HSBEditView *)[HSBEditView alloc] initWithFrame:CGRectMake(0, 0, 280, 46) H:h S:s B:b]; 

Cela fera taire l'avertissement du compilateur.

Questions connexes