我在看WWDC ARC介绍视频时,看到了一些我在ObjC中从未见过的东西,当时一些苹果工程师谈到了一个堆栈示例.
以下代码用于带有ARC的堆栈示例:
@implementation Stack
{
// instance variable declared in implementation context
NSMutableArray *_array;
}
- (id)init
{
if (self = [super init])
_array = [NSMutableArray array];
return self;
}
- (void)push:(id)x
{
[_array addObject:x];
}
- (id)pop
{
id x = [_array lastObject];
[_array removeLastObject];
return x;
}
@end
Please note the instance variable declared right after the 100 directive.
现在让我惊讶的是,一个实例变量实际上可以在实现文件中声明,而不是静态变量.我的问题如下:
- 这是iOS 5 SDK中引入的某种新构造,还是已经存在很长时间了?
- 如果不在对象外部访问实例变量,那么在实现中声明实例变量是否是一种良好的做法?它似乎比@private指令的使用更干净.