Objective

在前面, 我们知道了什么是类与对象的关系, 但使用对象的时候注意陷阱, 因为还有一种对象叫做匿名对象, 下面我们来看看~~


例子:

#import <Foundation/Foundation.h>

@interface Eyeglass : NSObject
{
    @public
    int lens;
}
- (void)eyeglassLens;
@end

@implementation Eyeglass
- (void)eyeglassLens
{
    NSLog(@"一副有%d个镜片的眼镜.", lens);
}
@end

int main()
{
    Eyeglass *eye = [Eyeglass new];
    eye->lens = 2;
    
    [eye eyeglassLens];
    
    return 0;
}


输出结果:

2015-01-15 16:19:52.303 a.out[10496:1108572] 一副有2个镜片的眼镜.



常规来讲, 上面这个例子是我们平常所写的, 但如果改一改之后:

int main()
{
    [Eyeglass new]->lens= 2;
    [[Eyeglass new] eyeglassLens];
    
    return 0;
}

这样子编译器也是不会报错的, 但结果就不是我们想要的:

2015-01-15 16:25:26.317 a.out[10511:1110360] 一副有0个镜片的眼镜.




那么为什么会这样子呢? 下面我们来看看示意图:



我们都知道[Eyeglass new]是创建一个新的对象, 想想上面的那个例子, 创建之后赋值为2, 在调用的时候又创建, 但并没有赋值, 所以它默认的值是0, 所以输出的结果是0.



在实际开发的时候, 我们千万一定不能这么写, 如果是这样子写的话, 第一时间就会被炒掉, 这是不规范的.






好了, 这次我们就讲到这里, 下次我们继续~~~~

原文地址:https://www.cnblogs.com/iOSCain/p/4282857.html