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