如何/在哪里声明用于编写objective-c代码的接口、实现、程序格式中的实例变量?
Posted
技术标签:
【中文标题】如何/在哪里声明用于编写objective-c代码的接口、实现、程序格式中的实例变量?【英文标题】:How/where do I declare instance variables in the interface, implementation, program format for writing objective-c code? 【发布时间】:2013-06-05 06:50:41 【问题描述】:我正在使用 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”中的“@'token”之前有一个“预期的表达式”。我需要更改什么才能使其编译?谢谢!!
【问题讨论】:
你使用哪个xcode版本 我已将您的代码复制到 Xcode 4.6.2 项目中,它编译并运行,没有任何警告。 【参考方案1】:我在使用 GNUStep 时遇到了同样的错误。更改@interface 声明并设置类似
@interface Fraction: NSObject
int numerator;
int denominator;
-(void) print;
-(void) setNumerator: (int) n;
-(void) setDenominator: (int) d;
@end
这成功了,并为我成功编译了程序。
【讨论】:
【参考方案2】:我假设,您将整个代码复制到一个文件中。 //---- @interface section ----
进入Fraction .h
文件,//---- @implementation section ----
进入Fraction .m
,其余的是main.m
文件的内容。但是你不应该修改main.m
的内容。
【讨论】:
将接口/实现放到单独的 .h/.m 文件中不是强制性的。事实上,问题中给出的代码编译并运行(在 Xcode 4.6.2 上)没有任何警告或问题。 好吧,我的错。感谢您的提醒。【参考方案3】:@autoreleasepool
是一个新特性,你的编译器似乎太旧了。见autoreleasepool was not declared in this scope error。
【讨论】:
以上是关于如何/在哪里声明用于编写objective-c代码的接口、实现、程序格式中的实例变量?的主要内容,如果未能解决你的问题,请参考以下文章
在 Objective-C 中在哪里编写 @property 指令?
我如何知道 Xcode Objective-C 中的错误在哪里引发?
没有使用 Objective-C 选择器声明用于通知 UIKeyboardWillShowNotification 和 UIKeyboardWillHideNotification 的方法