2011-10-05 63 views
0

因此,對於我的程序,我使用了5種不同的視圖,都需要訪問和共享相同的數據。當我第一次開始爲iPhone開發時,我發現了一種創建數據並將其存儲在appDelegate中的方法。現在,我有大量的變量,我從那裏訪問。如何發佈appDelegate變量

我現在的問題,是他們如何做內存管理?

appDelegate.h

@property (nonatomic, retain) NSString *analysisModeForSave; 
@property (nonatomic, retain) NSString *pdfPath; 
@property (nonatomic, retain) NSString *state; 
@property (nonatomic, retain) NSNumber *userLevel; 
@property (nonatomic, retain) NSNumber *currentHiliteID; 

然後@synthesize他們在.m文件

,並使用

Agri_ImaGIS_iPhoneAppDelegate *dataCenter = (Agri_ImaGIS_iPhoneAppDelegate *) [[UIApplication sharedApplication] delegate]; 

訪問他們所有的功能。現在,如果我不再需要變量,我只需將它設置爲零。我應該在appDelegate的dealloc中釋放它們嗎?內存有沒有得到清除其他應用程序終止?

回答

0

儘管Agri_ImaGIS_iPhoneAppDelegate的單例實例在app完成之前不會被釋放,但是在任何類的dealloc方法中釋放retain屬性都是很好的做法。無論如何,在這種情況下,系統會清理乾淨,但會因爲被混亂和嚴重的表現而皺眉頭......

0

一般規則的聲音: 每當你分配一個對象時,你可以在同一個類中釋放它。 這些NSNumbers和NSStrings沒有什麼不同。 你可以將它們設置爲無,無論你喜歡但你仍然必須在dealloc中釋放它們。

+0

釋放它,而不是釋放它。你的經驗法則也有些誤導,因爲它在工廠方法等幾種情況下是不真實的。最好將人們連接到內存管理文檔,並遵循NARC規則。 –