私はWWDCARCの紹介ビデオを見ていましたが、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ディレクティブの直後に宣言されたインスタンス変数に注意してください。
ここで驚いたのは、インスタンス変数が静的変数でなくても、実際に実装ファイルで宣言できることです。私の質問は次のようになります。
- これはSDKforiOS 5で導入された新しい構成ですか、それとも長い間可能でしたか?
- オブジェクトの外部でインスタンス変数にアクセスしない場合は、実装でインスタンス変数を宣言することをお勧めしますか?@privateディレクティブを使用するよりもずっとクリーンなようです。