2010-10-23 4 views
1

Это моя первая попытка в программе какао Objective-c, поэтому я не знаю, почему она дает мне эту ошибку. Я тоже не понимаю страницу Build Result.Я получаю Ошибка с кодом выхода 1 ошибка в xcode

myClass.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

Попробуйте импортировать '' и забыть cocoa.h – 2010-10-23 02:26:38

+0

когда вы получаете неудачную компиляцию с кодом выхода 1, обычно вы можете перейти к результатам сборки, а затем нажать маленькую кнопку с несколькими горизонтальными линиями. это даст вам некоторый вывод компилятора, который может быть полезен для устранения проблемы. – Mat

+0

Спасибо. Все еще бросает мне ошибку. – Adam

ответ

4

В вашем main.m вы хотите импортировать myClass.h, не MyClass .m

В файле заголовка указано необходимых вам. Если вы импортируете реализацию, вы дважды применяете эти методы, а значит, дубликаты символов.

Еще один совет, когда вы узнаете, когда вы говорите [[myClass alloc] init], то, что вы возвращаете, является указателем на объект, а не на класс. Таким образом, вы должны назвать это объектом, чтобы концепция была усилена для вас. Теперь, когда вы почувствуете разницу, вы очень сильно поможете, когда углубитесь в это.

(есть несколько вопросов, называющих конвенции здесь также, кстати)

+0

Хорошо, так это класс, но он создает объект? – Adam

+0

Да, вы отправляете сообщение «alloc» классу, а то, что вы возвращаете, является указателем на объект. Затем вы отправляете сообщение «init» этому объекту, и вы возвращаете указатель на объект, который теперь инициализирован и готов к использованию. –

+0

Эй, я попробовал свой код, и я обнаружил, что в файле main.m вы импортируете файл myclass.m, он должен быть myclass.h, кроме этой проблемы, ваш код просто отлично работает. – Radix

Смежные вопросы