2010-10-23 2 views
1

Ceci est ma première tentative d'un programme de cacao Objective-c, donc je n'ai aucune idée de pourquoi il me donne cette erreur. Je ne comprends pas non plus la page Build Result.Je reçois un échec avec le code de sortie 1 erreur dans xcode

maClasse.h

#import <Cocoa/Cocoa.h> 


@interface myClass : NSObject { 
    int a; 
    int b; 
} 

-(void) setvara:(int)x; 
-(void) setvarb:(int)y; 
-(int) add; 

@end 

myClass.m

#import "myClass.h" 


@implementation myClass 

-(void)setvara:(int)x{ 
    a=x;  
} 

-(void)setvarb:(int)y{ 
    b=y;  
} 

-(int)add{ 
    return a+b; 
} 
@end 

main.m

#import <Cocoa/Cocoa.h> 
#import <stdio.h> 
#import "myClass.m" 

int main(int argc, const char* argv[]) 
{ 
    myClass* class = [[myClass alloc]init]; 

    [class setvara:5]; 
    [class setvarb:6]; 

    printf("The sum: %d", [class add]); 

    [class release]; 

} 
+0

Essayez d'importer '' et oublier le Cocoa.h –

+0

lorsque vous obtenez une compilation a échoué avec le code de sortie 1, Habituellement, vous pouvez aller aux résultats de la construction, puis cliquez sur le petit bouton avec les quelques lignes horizontales. Cela vous donnera une sortie du compilateur qui peut être utile pour suivre votre problème. – Mat

+0

Merci. Toujours me jette l'erreur. – Adam

Répondre

4

Dans votre main.m, vous voulez importer maClasse.h, pas myClass .m

Le fichier d'en-tête a le décl arations dont vous avez besoin. Si vous importez l'implémentation, vous implémentez ces méthodes deux fois, d'où les symboles en double.

Un autre conseil que vous apprenez, quand vous dites [[myClass alloc] init], ce que vous obtenez est un pointeur vers un objet, pas une classe. Donc, vous devriez l'appeler un objet juste pour que le concept soit renforcé pour vous. Obtenir la différence dès maintenant vous aidera grandement au fur et à mesure que vous approfondirez cette question.

(il y a quelques problèmes de nommage de congrès ici aussi, d'ailleurs)

+0

Ok c'est donc une classe mais ça crée un objet? – Adam

+0

oui, vous envoyez un message 'alloc' à une classe, et ce que vous obtenez est un pointeur vers un objet. Ensuite, vous envoyez un message 'init' à cet objet, et vous obtenez un pointeur vers un objet qui est maintenant initialisé et prêt à l'emploi. –

+0

Hey j'ai essayé votre code et j'ai trouvé que dans le fichier main.m vous importez le fichier myclass.m il devrait être myclass.h mis à part ce problème, votre code fonctionne très bien. – Radix

Questions connexes