关于oc定义的一些问题

来源:互联网 发布:mac电脑不休眠 编辑:程序博客网 时间:2024/05/06 18:51
#import "Fraction.h"@implementation Fraction@synthesize numerator,denominator;-(void) print{    NSLog(@"%i/%i",numerator,denominator);}@end#import "Fraction.h"int main(int argc, const char * argv[]){    @autoreleasepool {                Fraction *a=[[Fraction alloc] init];        Fraction *b;        [a print];        [b print];        NSLog(@"%i/%i",a.numerator,a.denominator);        NSLog(@"%i/%i",[b numerator],[b denominator]);        NSLog(@"%i",a);        NSLog(@"%i",b);        if (!a) {            NSLog(@"123");        }        if (!b) {            NSLog(@"456");        }        a.numerator=1;        a.denominator=3;        b.numerator=2;        b.denominator=5;        NSLog(@"%i/%i",a.numerator,a.denominator);        NSLog(@"%i/%i",[b numerator],[b denominator]);            }    return 0;}

2015-04-26 10:05:05.981 Try[821:303] 0/0
2015-04-26 10:05:05.984 Try[821:303] 0/0
2015-04-26 10:05:05.985 Try[821:303] 0/0
2015-04-26 10:05:05.987 Try[821:303] 1087952
2015-04-26 10:05:05.987 Try[821:303] 0
2015-04-26 10:05:05.988 Try[821:303] 456
2015-04-26 10:05:05.989 Try[821:303] 1/3
2015-04-26 10:05:05.990 Try[821:303] 0/0

a正常初始化 实例变量为0/0 指针指向任意地址  b由于编译器初始化为nil 即空(nil == 0) 指针指向地址0x00000000

[a print]正常输出 [b print]由于对象为空 没有输出

a的两条NSLog语句分别输出实例变量和地址 b分别输出nil和0

后面b的判断也确实为0 对其设值也是一样为nil 因为没有正常初始化

最后简单类型由于编译器初始化都为0

0 0