2012-11-05 117 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有點奇怪。 但是,如果你的屬性很強大,你根本不需要關心記憶的東西。