4

第一篇文章,我真的希望这不是一个重复或已解决的问题。我尝试在这里和谷歌搜索,虽然我发现了类似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();
    }
}

这是我的objective-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

4 回答 4

6

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

#import <Foundation/Foundation.h>

代替:

#import <CoreFoundation/CoreFoundation.h>
于 2012-08-20T14:33:23.637 回答
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 字面量的习惯;@"example" 表示如果/并且当您决定进入 Cocoa 时。祝你学业顺利。

于 2012-08-20T14:52:27.200 回答
0

可能是您的空界面上不需要大括号:

@interface Duck : NSObject
@end
于 2012-08-20T14:34:57.103 回答
-1

尝试使用导入而不是包含。此外,请确保 CoreFoundation 框架实际上是您项目的一部分。

于 2012-08-20T14:34:20.047 回答