我是Objective-c的新手我曾经用java编写代码。
我在Xcode 4.5中编写了以下代码
代码必须得到这个输出:
the value of m is:
1/3
但我得到了这个输出:
the value of m is:
如果有人能告诉我代码中的错误
代码:
#import <Foundation/Foundation.h>
@interface Fraction : NSObject
{
int num ;
int dem;
}
-(void) print;
-(void) setNum:(int) n ;
-(void) setDem: (int) d;
@end
@implementation Fraction
-(void) print {
NSLog(@"%i/%i",num,dem);
}
-(void) setNum:(int)n{
num=n;
NSLog(@"set num work fine %i:",n);
}
-(void)setDem:(int)d{
dem=d;
NSLog(@"set dem work fine %i:",d);
}
@end
int main (int argc ,char *argv[]){
@autoreleasepool {
Fraction *m;
// m=[m alloc] ;
m=[m init];
[m setNum:1];
[m setDem:3];
NSLog(@"the value of m is:");
[m print];
}return 0;
}
任何人都可以解释m = [m alloc];在新的xcode中
答案 0 :(得分:4)
alloc
是一个类方法,所以你必须在你的类上调用它:
m = [[Fraction alloc] init];
或者,你的风格:
m = [Fraction alloc];
m = [m init];
这就是您不打印任何内容的原因,m
仍然是nil
,因为您没有alloc
它。向init
收件人发送nil
邮件会返回nil
,因此当您尝试打印时,您基本上会有一个nil
对象。