我正在觀看WWDC ARC介紹視頻,在Apple的某個工程師談論Stack示例之前,我看到了在ObjC中從未見過的東西。在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指令後立即宣佈的實例變量。
現在讓我感到驚訝的是,實際變量實際上可以在實現文件中聲明,而不是一個靜態變量。我的問題將如下:
- 這是一些新的構造引入SDK的iOS 5或有這可能很長一段時間嗎?
- 如果實例變量不能在對象之外訪問,在實現中聲明實例變量是否是一種好的做法?它看起來更清潔,然後使用@private指令。
你有一個完整的,可編輯的例子嗎? –
上面的代碼應該在iOS 5 SDK中編譯得很好。 –
如何在類擴展中添加iVars? –