2011-01-11 16 views
0

我有这样的代码在我的.h:iPhone:这两个任务之间的差异

@property (nonatomic, retain) NSArray *arrayData; 

之间有什么区别:

self.arrayData = [[NSArray alloc]initWithObjects:@"date",@"trip",nil]; 

和:

arrayData = [[NSArray alloc]initWithObjects:@"date",@"trip",nil]; 

什么我应该使用以及如何释放arrayData变量。

由于

+0

我想你需要“时使用自我”:http://stackoverflow.com/questions/2385980/objective-c-when-使用自己 – 2011-01-11 23:39:15

+0

@Evan,像这样它泄漏,你还应该添加一个`autorelease`。 – mvds 2011-01-11 23:41:20

回答

1

不同的是,使用self.arrayData = ...保留阵列。你应该使用self.arrayData = nil;来释放它。

这里不起作用,为init本身并不分配数组的代码。你可以使用

self.arrayData = [NSArray arrayWithObjects:@"date",@"trip",nil]; 

分配和初始化数组。

psarrayWithObjects返回已分配和自动释放的对象。这意味着如果您不保留该对象,该对象将会消失。所以用self.arrayData = ...这样做。

与分配/初始化/自动释放相当于将改为:

self.arrayData = [[[NSArray alloc] initWithObjects:....,nil] autorelease];