4

最初の投稿で、これが繰り返しの質問や解決された質問ではないことを本当に望んでいます。こことGoogleで検索してみましたが、同様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リファレンスを見ると、CoreFoundationではなく、Foundationフレームワークの一部であることがわかります。

#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リテラルを使用する習慣を身に付けてください。@ココアに進むことを決定した場合の「例」。あなたの研究で頑張ってください。

于 2012-08-20T14:52:27.200 に答える
0

空のインターフェイスに中括弧が必要ない場合があります。

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

includeの代わりにimportを使用してみてください。また、CoreFoundationフレームワークが実際にプロジェクトの一部であることを確認してください。

于 2012-08-20T14:34:20.047 に答える