我如何/在哪里声明实例变量的接口,实现,程序格式编写objective-c代码



我正在使用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行。在那之后,它一直告诉我"分子"one_answers"分母"没有声明。我得到的这个程序的最后一个错误是,在"@autoreleasepool"中有一个"在'@'令牌之前的预期表达式"。我需要做什么更改才能使其编译?谢谢! !

我刚刚使用GNUStep得到了相同的错误。更改@interface声明并设置类似

的内容
@interface Fraction: NSObject {
    int numerator;
    int denominator; 
}
-(void) print;
-(void) setNumerator: (int) n; 
-(void) setDenominator: (int) d;
@end

这就成功地为我编译了程序。

我假设您将整个代码复制到一个文件中。//---- @interface section ----放入Fraction .h文件,//---- @implementation section ----放入Fraction .m文件,其余的放入main.m文件。但是你不应该修改main.m的内容

@autoreleasepool是一个新功能,你的编译器似乎太旧了。

相关内容

  • 没有找到相关文章

最新更新