Objective - C基础: 第一天 - 13.匿名对象的基本认识
在前面, 我们知道了什么是类与对象的关系, 但使用对象的时候注意陷阱, 因为还有一种对象叫做匿名对象, 下面我们来看看~~
例子:
#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.
在实际开发的时候, 我们千万一定不能这么写, 如果是这样子写的话, 第一时间就会被炒掉, 这是不规范的.
好了, 这次我们就讲到这里, 下次我们继续~~~~