【问题标题】:Why definition not required and synthesize required iphone为什么不需要定义和合成需要的iphone
【发布时间】:2012-11-14 17:20:05
【问题描述】:

我有一个界面

@接口 A { NSMutableArray *_myArray; } @property(非原子,保留)NSMutableArray *myArray;

在我写的实现中

@synthesize myArray = _myArray;

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

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

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

【问题讨论】:

  • 即使这些也不是必需的 "NSMutableArray *_myArray;"和@synthesize myArray = _myArray;

标签: iphone objective-c


【解决方案1】:

使用最新版本的 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

【讨论】:

    【解决方案2】:

    来自documentation

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-09
      • 2017-06-07
      • 2018-03-18
      • 1970-01-01
      • 2020-05-03
      • 1970-01-01
      • 2018-07-30
      • 2011-06-18
      相关资源
      最近更新 更多