Memory management 声明NSArray的正确方法(内存方面)

Memory management 声明NSArray的正确方法(内存方面),memory-management,nsarray,Memory Management,Nsarray,我有一个具有非原子和保留性质的NSArray。我想知道的是,我是否以正确的方式对其进行了初始化,以便保留计数是应该的 _lengthArr是my.h中lengthArr的@synthetic ivar @synthesize lengthArr = _lengthArr; _lengthArr = [[NSArray arrayWithObjects:@"10 Minutes", @"20 Minutes", @"30 Minutes", @"1 Hour", @"2 Hours", @"5

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

_lengthArr是my.h中lengthArr的@synthetic ivar

@synthesize lengthArr = _lengthArr;

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

您正在分配给ivar,因此您发布的代码将执行您想要的操作。您还可以使用
\u lengthArr=[[NSArray alloc]initWithObjects:…]
,这将避免无用的自动释放


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

它已在.h中分配。我想我在帖子里没有说清楚。请再看一看。