2014-01-17 74 views

回答

4

你做了什麼,如果該屬性arrAppInfo被聲明爲保留(或強)財產在非ARC環境非常有效。實際上,ARC在類似情況下所做的只是在檢測到當前範圍中不再使用arrInfo屬性時才發佈版本。

深入下去:

NSMutableArray *arrInfo = [[NSMutableArray alloc] init]; //arrInfo retain count = 1 
appDelegate.arrAppInfo = arrInfo; //arrInfo retain count = 2 
[arrInfo release]; //arrInfo retain count = 1 

如果你不將其分配給你會重新分配或釋放arrAppInfo屬性時引起了未來內存泄漏一個留置財產後釋放arrInfo變量,因爲其保留數不會爲0.

+0

我已經聲明如下@property(nonatomic,retain)NSMutableArray * arrAppInfo;在appDelegate類 – JKMania

+2

因此,你發佈的代碼是有效的和內存泄漏免費的,你應該接受這是一個有效的答案 –

4

這取決於如何在appDelegate中定義arrAppInfo。

如果它是一個強有力的參考,只要appDelegate在某個時刻發佈arrAppInfo,就會很好。

@property (nonatomic, retain) NSMutableArray *arrAppInfo; //All good 

如果它的弱引用,那麼當你嘗試,因爲它被釋放訪問arrAppInfo你會得到一個錯誤。

@property (nonatomic, assign) NSMutableArray *arrAppInfo; //Trouble