1

私はインターフェースを持っています

@インターフェース A
{
    NSMutableArray *_myArray;
}

@property(非アトミック、保持)NSMutableArray *myArray;

私が書いた実装では

@synthesize myArray = _myArray;

そして、私がこの配列を使用しているコードの本体では、このようないくつかの配列値のみを格納しています...

-(void)updateArray:(NSArray*)p_NewValues
{
    self.myArray = nil;
    myArray = [NSMutableArray alloc]initwithArray:p_NewArray];
}

残念なことに、コード レビューで、変数の定義は不要であることがわかりました。合成だけで問題ありません。だれか理由を説明できますか?

4

2 に答える 2

3

最新バージョンのXcodeで使用されている最新のObjective-Cコンパイラを使用すると、明示的なivarは必要なく、@synthesizeもう必要ありません。これで、コードは次のようになります。

@interface A

@property (nonatomic, retain) NSMutableArray *myArray;

@end

@implementation A

- (void)updateArray:(NSArray *)p_NewValues {
    self.myArray = [NSMutableArray arrayWithArray:p_NewArray];
}

@end
于 2012-11-27T06:23:05.150 に答える
3

ドキュメントから

@synthesize ディレクティブは、特に宣言されていない場合、適切なインスタンス変数も合成します。

于 2012-11-27T06:11:37.430 に答える