@interface之前的预期标识符或'(')

时间:2012-08-20 14:28:32

标签: objective-c macos

第一篇文章,我真的希望这不是一个重复或解决的问题。我尝试在这里和谷歌搜索,虽然我发现类似的Expected identifier or '('错误,但没有一个解决方案对我有效。

基本上我正在尝试学习设计模式,因为我曾经知道一点java我试图用它作为学习objective-c的机会所以我有一个工作的java程序和一个xCode项目我在Expected identifier or '('

之前的头文件中收到错误@interface

这是我的java解决方案(我知道非常简单):

public class Duck {

public void quack(){
        System.out.print("Quack!");

    }
    public void swim(){
        System.out.print("swimming duck!");
    }
public void display(){
    quack();
    swim();
        }

    }
public class mainClass {
    public static void main(String[] args){
        Duck duck = new Duck();
        duck.display();
    }
}

这是我的目标-c版本。

//duck.h
#include <CoreFoundation/CoreFoundation.h>

@interface Duck : NSObject{ //Expected identifier or '('

}
@end

//  Duck.m
#include "Duck.h" 
@implementation Duck
-(void)quack{
    printf("Quack!");
}
-(void)swim{
    printf("swimming duck!");
}

-(void)display{
    [self quack];
    [self swim];    
}
@end

//  main.c
#include <CoreFoundation/CoreFoundation.h>
#include "Duck.m"

int main(int argc, const char * argv[])
{
    Duck *duck = [[Duck alloc] init];
    [duck display];
    return 0;
}

如果任何人可以提供帮助,我会非常感激,如果这是一个重复的帖子再次抱歉

4 个答案:

答案 0 :(得分:6)

编译器不知道NSObject是什么。如果你查看reference,你会发现它是Foundation框架的一部分,而不是CoreFoundation,所以:

#import <Foundation/Foundation.h>

而不是:

#import <CoreFoundation/CoreFoundation.h>

答案 1 :(得分:1)

//duck.h
//#include <CoreFoundation/CoreFoundation.h>
#import <Foundation/Foundation.h> // or Cocoa/Cocoa.h

@interface Duck : NSObject//{ //Expected identifier or '('

//} not necessary if there are no instance fields
- (void)quack;
- (void)swim;
- (void)display;
@end

//  Duck.m
//#include "Duck.h"
#import "Duck.h" 
@implementation Duck
-(void)quack{
    printf("Quack!");
}
-(void)swim{
    printf("swimming duck!");
}

-(void)display{
    [self quack];
    [self swim];    
}
@end

//  main.c SHOULD BE ~main.m~ if using ObjC!!!
//#include <CoreFoundation/CoreFoundation.h>
//#include "Duck.m"
#import "Duck.h"

另外,养成使用NSString文字的习惯; @“示例”for if /和当你决定进入Cocoa时。祝你学习顺利。

答案 2 :(得分:0)

可能你的空接口上不需要花括号:

@interface Duck : NSObject
@end

答案 3 :(得分:-1)

尝试使用import而不是include。另外,请确保CoreFoundation框架实际上是项目的一部分。