2

私は、Stephen Kochan による Programming in Objective-C 第 4 版を使用して、Objective-C を独学しています。初心者の私はデバッグの方法をまだ理解していません。本からコードをコピーして Xcode に貼り付けても、エラーが発生します。これは、コンパイルできない本から得たコードの例です。

#import <Foundation/Foundation.h>
//---- @interface section ----
@interface Fraction: NSObject
-(void) print;
-(void) setNumerator: (int) n; 
-(void) setDenominator: (int) d;
@end
//---- @implementation section ----
@implementation Fraction {
    int numerator;
    int denominator; 
}
-(void) print {
    NSLog (@"%i/%i", numerator, denominator);
}
-(void) setNumerator: (int) n {
    numerator = n; 
}
-(void) setDenominator: (int) d {
    denominator = d; 
}
@end
//---- program section ----
int main (int argc, char * argv[]) {
    @autoreleasepool { 
        Fraction *myFraction;
    // Create an instance of a Fraction
        myFraction = [Fraction alloc]; myFraction = [myFraction init];
    // Set fraction to 1/3
        [myFraction setNumerator: 1]; [myFraction setDenominator: 3];
    // Display the fraction using the print method
        NSLog (@"The value of myFraction is:");
        [myFraction print]; 
    }
    return 0; 
}

私が得ているエラーは、12行目の「一貫性のないインスタンス変数の指定」です。その後、「分子」と「分母」が宣言されていないことを伝え続けます。このプログラムで得られる最後のエラーは、「@autoreleasepool」の「@」トークンの前に予期される式があることです。コンパイルするには何を変更する必要がありますか? ありがとう!!

4

3 に答える 3

1

GNUStep を使用して同じエラーが発生しました。@interface 宣言を変更し、次のように設定します

@interface Fraction: NSObject {
    int numerator;
    int denominator; 
}

-(void) print;
-(void) setNumerator: (int) n; 
-(void) setDenominator: (int) d;
@end

これにより、トリックが作成され、プログラムが正常にコンパイルされました。

于 2014-11-25T22:52:12.940 に答える
0

コード全体を 1 つのファイルにコピーしたと思います。はファイルに//---- @interface section ----入り、 はに入り、残りはファイルの内容です。ただし、 の内容を変更しないでください。Fraction .h//---- @implementation section ----Fraction .mmain.mmain.m

于 2013-06-05T07:06:31.023 に答える