2011-10-29 1 views
-1

J'ai une classe nommée myClass qui contient 3 NSInteger et je ne peux pas faire une méthode comme ça:méthode renvoie mon objectif d'objet c

- (myClass)getClass { 
    myClass *class1; 
    return class1 
} 

il me donne une erreur

EDIT: l'erreur est dans le .h

- (myClass *)getClass; Error: expected ')' before 'myClass' 
+0

Quelle sorte d'erreur? – millimoose

+0

@Inerdia probablement "Type d'interface 'myClass' ne peut pas être retourné par valeur." –

+0

Non, "attendu") "avant myClass" – asterix22

Répondre

1

Je suppose que vous voulez pour renvoyer une instance de myClass. Vous pouvez le faire comme ceci:

- (myClass *)getClass { 
    myClass *class1 = [[[myClass alloc] init] autorelease]; 
    return class1; 
} 

Si au contraire vous voulez retourner la classe elle-même:

- (Class)getClass { 
    return myClass; 
} 

Vous pouvez modifier le - à un + si vous voulez qu'il soit une méthode de classe au lieu de une méthode d'instance. Votre question n'était pas très claire.


Dans Objective-C vous ne pouvez jamais retourner un objet par valeur, puisque la taille d'un objet en Objective-C est pas connu au moment de la compilation. Si vous n'aimez pas les astérisques partout où vous pouvez faire typedef myClass* myClassRef et retourner un myClassRef à la place.

+0

Merci, mais l'erreur est dans le .h et non dans le. J'ai aussi eu des erreurs dans le .m, mais j'ai écrit votre premier code et je les ai corrigés. – asterix22

0

En Objective-C, chaque type de classe est un type de référence. Ainsi, le type de retour doit être myClass*. Lorsque nous avons un pointeur comme -

int *ptr = new int; // The type of ptr is int* but not int. Same is the case for 
         // class types too. 
+0

Oui, j'ai écrit le -, mais je vais essayer avec * – asterix22

+0

@ user1019831 - hmm .. vous avez modifié la question. – Mahesh

+0

C'est C++, pas Objective-C. –

0

Fin de réponse Mahesh, vous devez faire:

- (myClass*) getClass { 
    myClass *class1; 
    return class1; 
} 

ou si la méthode est statique, vous devez faire:

+ (myClass*) getClass { 
    myClass *class1; 
    return class1; 
} 
Questions connexes