为什么定义不需要并合成所需的iPhone

时间:2012-11-27 06:05:10

标签: iphone objective-c

我有一个界面

@interface A 
{
    NSMutableArray *_myArray;
} 

@property(nonatomic, retain)NSMutableArray *myArray;

在我编写的实现中

@synthesize myArray = _myArray;

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

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

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

2 个答案:

答案 0 :(得分:3)

来自documentation

  

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

答案 1 :(得分: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