1

我有一个界面

@接口 A
{
    NSMutableArray *_myArray;
}

@property(非原子,保留)NSMutableArray *myArray;

在我写的实现中

@synthesize myArray = _myArray;

在我使用这个数组的代码主体中,只存储了一些数组值,就像这样......

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

但不幸的是在代码审查中我发现我不需要任何变量定义只有 Synthesize 是可以的,有人可以解释为什么吗?

4

2 回答 2

3

文档

如果没有另外声明,@synthesize 指令还会合成适当的实例变量。

于 2012-11-27T06:11:37.430 回答
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 回答