我在下面得到了一个测试代码。
(通过这个例子,我遇到了一个接口不能在没有保留的情况下被静态分配。)
通过这个代码块,我明白了真正的保留是什么。
我想确定这是否会泄漏,我是否应该将其释放到其他地方。只是我不想每次都重新初始化数组。并使其成为静态的。(内存的劣势,但速度的优势)
我应该在某处释放这个保留的静态数组吗?它是一个安全的代码还是我完全删除了静态并保留了单词并且只是经典地使用 arrayObjects 方法初始化?那么你更喜欢我什么?
-(NSUInteger)getCoordYByX:(int)ax
{
NSUInteger ret_=-1;
static NSArray *coordsX=nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
coordsX=[[NSArray arrayWithObjects:
[NSNumber numberWithInt:50],
[NSNumber numberWithInt:170],
[NSNumber numberWithInt:190],
[NSNumber numberWithInt:210],
[NSNumber numberWithInt:350],
nil]retain];
/*it is more longer. cropped for test purposes*/
});
ret_=[[coordsX objectAtIndex:ax] unsignedIntegerValue];
return ret_;
}
总之:
为什么静态不保留数组初始值?
如果我想使用保留,可能会发生内存泄漏吗?