2013-10-01 4 views
0

Просто начиная с Objective C поэтому, пожалуйста, быть нежным, у меня есть класс следующим образом:.Ожидаемый идентификатор или '(' цель C

Card.h

#import <Foundation/Foundation.h> 

@interface Card : NSObject 
@property (nonatomic) NSUInteger x; 
-(NSUInteger) getNum; 
@end 

Card.m

#import "Card.h" 

@implementation Card 
-(NSUInteger) getNum { 
    return self.x; 
}  
@end 

main.c

#include <CoreFoundation/CoreFoundation.h> 
#include "Card.h" 

int main(int argc, const char * argv[]) 
{ 
    return 0; 
} 

Когда я compil e, я получаю ошибку, первый из которых:

NSObjCRuntime.h: Parse Issue: Ожидаемый идентификатор или '('.

Я знаю, что это что-то глупое - просто надеясь, что кто-то здесь может определить, что я делаю неправильно.

+0

Общепринятое соглашение в Objective-C к * not * префикс getters с «get» и вместо этого просто называет их получаемым свойством. Кроме того, это соглашение, чтобы указать полное имя. В вашем случае 'getNum' будет записываться как' number'. –

+0

Спасибо @David за указатели. Я предполагаю, что соглашение важно. В этом случае я просто создавал тестовый метод, но я принимаю ваши очки на борту. –

ответ

2

Вы действительно компилируете это с помощью компилятора Objective C? Традиционное расширение для указания GCC и clang для использования ObjC - .m (не .c).

+0

Я только что создал инструмент командной строки OSX в Xcode, и он создал main.c для меня. Он фактически импортировал CoreFoundation (который я изменил при тестировании). Я создал класс Deck, используя новое меню файлов. Я тоже создаю его в XCode. –

+0

Похоже, что вы создали проект C, а не Objective C. Когда я создаю тестовое приложение, я получаю файл «Main.m», файл Objective C. Компилятор жалуется, потому что Foundation.h - это заголовок Objective C, но вы используете его в чистом файле C (main.c). –

+0

Это имеет смысл! Странно, что Xcode позволяет «инструмент командной строки» без возможности импортировать объективные классы c ... если не существует способа? –

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