第一篇文章,我真的希望这不是一个重复或解决的问题。我尝试在这里和谷歌搜索,虽然我发现类似的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;
}
如果任何人可以提供帮助,我会非常感激,如果这是一个重复的帖子再次抱歉
答案 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框架实际上是项目的一部分。