剂量@synthesize表示法会影响延迟实例化吗?

时间:2014-11-28 12:08:06

标签: ios objective-c cocoa

我们都知道新的目标c complier会自动执行@synthesize来创建属性设置器和getter。 As described here.

我的问题是表现如何?

我们知道如果我们自己写吸气剂。我们有可能实现惰性实例化,这对内存管理非常有用。 但是如果我们使用默认的@synthesize或者根本不使用@synthesize,那么性能差异会是多少呢?

例如

@property (nonatomic) NSArray *newArray;

//Approach 1:
@synthesize newArray = _newArray;

//Approach 2:
-(NSArray *)newArray {

  if(!_newArray){
    _newArray = [[NSArray alloc] initWithObjects:@"1", @"2", @"3"...@"1000",nil];
  }
  return _newArray;
}

有谁知道?

1 个答案:

答案 0 :(得分:0)

目前还不清楚你究竟在问什么,希望这会有所帮助:

基本的自写入的getter(一个只返回支持变量中的值)和一个自动生成的getter之间的性能差异在最坏的情况下应该可以忽略不计。对于这样的吸气剂来说,这么做的事情很少,任何人都很难做到这一点!

如果你想在第一次读取属性时进行延迟初始化,那么你必须自己编写getter,如果需要线程安全,请使用dispatch_once()而不是简单的if测试