Я смотрел видеоролик вступления в WWDC ARC, и я видел то, чего я никогда не видел в ObjC, прежде чем кто-то из инженеров Apple говорил о примере Stack.
Следующий код использовался для примера стека с 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.
Теперь то, что меня удивило, заключается в том, что переменная экземпляра действительно может быть объявлена в файле реализации, без статической переменной. Мои вопросы будут следующими:
- Это какая-то новая конструкция, введенная в SDK для iOS 5, или это возможно в течение длительного времени?
- Было бы хорошей практикой объявлять переменные экземпляра в реализации, если переменные экземпляра не должны быть доступны за пределами объекта? Кажется, это чище, чем использование директивы @private.