objective-c对象或类

时间:2013-01-13 22:12:57

标签: objective-c object

我是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中

1 个答案:

答案 0 :(得分:4)

alloc是一个类方法,所以你必须在你的类上调用它:

m = [[Fraction alloc] init];

或者,你的风格:

m = [Fraction alloc];
m = [m init];

这就是您不打印任何内容的原因,m仍然是nil,因为您没有alloc它。向init收件人发送nil邮件会返回nil,因此当您尝试打印时,您基本上会有一个nil对象。