我们都知道新的目标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;
}
有谁知道?
答案 0 :(得分:0)
目前还不清楚你究竟在问什么,希望这会有所帮助:
基本的自写入的getter(一个只返回支持变量中的值)和一个自动生成的getter之间的性能差异在最坏的情况下应该可以忽略不计。对于这样的吸气剂来说,这么做的事情很少,任何人都很难做到这一点!
如果你想在第一次读取属性时进行延迟初始化,那么你必须自己编写getter,如果需要线程安全,请使用dispatch_once()
而不是简单的if
测试