0

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

4

1 回答 1

4

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

m = [[Fraction alloc] init];

或者,按照您的风格:

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

这就是您不打印任何东西的原因,m仍然是nil因为您没有打印alloc。将init消息发送给nil接收者返回,所以当你尝试打印时nil你基本上有一个对象。nil

于 2013-01-13T22:18:06.860 回答