我正在观看 WWDC ARC 介绍视频,当一些 Apple 工程师谈到 Stack 示例时,我看到了以前在 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
请注意在@implementation指令之后声明的实例变量。
现在让我感到惊讶的是,一个实例变量实际上可以在实现文件中声明,而不是一个静态变量。我的问题如下:
- 这是在 iOS 5 的 SDK 中引入的一些新结构,还是可能已经存在很长时间了?
- 如果不在对象外部访问实例变量,那么在实现中声明实例变量是否是一种好习惯?看起来比使用 @private 指令更干净。