2012-11-05 91 views
1

我已经开始将我的项目转换到ARC下工作,我想知道下面的行为如何。在ARC模式下初始化变量

据我所知,下面一行会导致手动内存管理规则下的内存泄漏。

self.array = [[NSArray alloc] init]; 

,建议使用一个自动释放物体,例如,

self.array = [NSArray array] or 
    array = [[NSArray alloc] init]; 
  1. 因此,确实的ARC模式导致从以下行内存泄漏以及?

    self.array = [[NSArray alloc] init];

  2. 当我们直接分配给阵列(?),如下所示,而无需使用产生设定器可以在阵列的这个原因过早释放?

    array = [[NSArray alloc] init];

请考虑数组作为一个实例变量。

回答

3

1)不,不漏。
2)不,应该也能工作

这两种方式都是安全的ARC。无论如何,你应该尽可能使用属性。您需要注意的唯一情况如下:

如果您的财产不济,并且您指定了一个新创建的对象,如self.array = [[NSArray alloc] init],它将在下一行中消失。 ARC有点奇怪。 但是,如果你的属性很强大,你根本不需要关心记忆的东西。