#import <Foundation/Foundation.h>
// -------- @ interface section -----
@interface Fraction : NSObject
{
int numerator ;
int denominator;
}
-(void) print;
-(void) setNumerator : (int) n;
-(void) setDenominator : (int) d;
@end
// ----- @implementation section -----
@implementation Fraction
-(void) print
{
NSLog (@"%i/%i", numerator, denominator);
}
-(void) setNumerator : (int) n
{
numerator = n;
}
-(void) setDenominator: (int) d
{
denominator = d;
}
@end
// ----程序部分----
int main(int argc, const char * argv[]) {
@autoreleasepool {
//创建分数的实例
myFraction = [Fraction alloc];
myFraction = [Fraction init];
//将分数设置为1/3
[myFraction setNumerator :1];
[myFractioin setDenominator :3];
//使用print方法显示分数
NSLog(@"The value of My Fraction is :");
[myFraction print];
[myFraction release];
}
return 0;
}
答案 0 :(得分:0)
您必须声明您的本地变量,您不能简单地按名称引入它们。所以:
myFraction = [Fraction alloc];
错了,至少应该是:
Fraction *myFraction; // declare variable
myFraction = [Fraction alloc]; // allocate
可以简单地写成:
Fraction *myFraction = [Fraction alloc];
然后在下一行你又犯了一个简单的错误:
myFraction = [Fraction init];
你打算初始化你分配的对象,而不是类,所以这至少应该是:
myFraction = [myFraction init];
然而,在单独的行中分配和初始化是非常不寻常的,所以:
Fraction *myFraction = [Fraction alloc];
myFraction = [myFraction init];
写为单行:
Fraction *myFraction = [[Fraction alloc] init];
甚至:
Fraction *myFraction = [Fraction new];
因为new
是alloc
后跟init
的标准方法。
最后删除对release
的调用,在使用ARC的现代Objective-C中它是非法的。
除了修复之外,输入错误和代码应该有效。
一旦你完成了,找到一本更新的书来学习编程,你所拥有的那本书太旧了。
HTH