声明NSArray(Memory-Wise)的正确方法

时间:2011-05-21 15:49:04

标签: memory-management nsarray

我有一个NSArray,它具有非原子性和保留性。我想知道的是我是否以正确的方式对其进行初始化,以便保留计数应该是什么?

_lengthArr是my.h中lengthArr的@synthesized ivar

@synthesize lengthArr = _lengthArr;

_lengthArr = [[NSArray arrayWithObjects:@"10 Minutes", @"20 Minutes", @"30 Minutes", @"1 Hour", @"2 Hours", @"5 Hours", @"5 Hours +", nil] retain];

1 个答案:

答案 0 :(得分:0)

你在那里分配了一个ivar,所以你发布的代码会做你想要的。您也可以使用_lengthArr = [[NSArray alloc] initWithObjects:...],这样可以避免无用的自动释放。

或者你可以self.lengthArr = [NSArray arrayWithObjects:...]允许setter自动保留它,尽管建议在初始化方法中避免这种情况。