2012-08-03 96 views
0

我的應用程序創建多個陣列,例如:內存管理陣列

NSString *ItemsA[91]; 
int GroupRep[11]; 
double TaxR[16]; 
short InputT[200]; 
BOOL tmpEx[20]; 

,需要在這些結構可通的應用,直到應用程序的結束。我的問題是 我是否需要顯式地分配NSString數組還是可以以這種方式初始化每個數組單元:ItemsA [10] = @「use option1」例如。

ii。我是否需要釋放或釋放上述任何陣列

iii。我明白如果我沒有專門使用alloc,那麼iOS會自動執行保留/釋放的事情。如果是的話什麼:

UITapGestureRecognizer *gestur1 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dispR)]; 

同樣我創建一個類:

myClass=[[PieClass alloc]initWithFrame:CGRectMake(1+ipX, ipY, 320, rView.frame.size.height)]; 
    ... 
    [myClass release] 

這個類分配自己的東西。我是否需要釋放每一個或只是整個班級,如上所述就足夠了。

謝謝

回答

1

通常,不要使用語言數組來存儲對象。使用NSMutableArray實例;他們相對較少的開銷(可能無法衡量),而且更自然。

您還需要將任何值存儲在可以本地化的文件中。因此,您需要加載所述文件,並且再次將它們存儲在NSArray中會更容易。 developer.apple.com上有關於該主題的大量文檔。

最後,這看起來像您的應用程序數據。因此,你可能真的想擁有一個適當的模型層來管理所述數據。有一天,你可能會想重構應用程序來從服務器獲取數據,並有一個合適的模型層可以幫助你做到這一點。

請注意,您通常可以掛起模型 - 數據管理的東西 - 關閉應用程序委託。或者你可以通過某個單身人士到達它。

這是一個高層次的答案,目標是嘗試引導您走向更符合預期模式的路徑。

+0

感謝您的意見。建立一個數據層聽起來像是一個好主意,當我重構應用程序時將會這樣做。 – 2012-08-04 16:24:04

+0

現在我只想更深入地研究內存管理,儘管我知道基本規則,即如果您分配,複製或新建對象時擁有它,有時我不確定何時完全釋放obj內存。例如,如果我有一個方法,用一些值和計算初始化一個數組,並且我已經在它裏面有了alloc。我需要通過應用程序的這些值,有時需要再次調用該方法,如果我需要重新計算新的值,所以我什麼時候釋放alloc?在應用程序結束時或在我調用該方法之前或之後?希望它是有道理的,我可以詳細說明,如果需要 – 2012-08-04 16:25:40

+0

不知道我明白「數據管理的東西 - 關閉你的應用程序委託」...如果你能闡述它的偉大。 – 2012-08-04 16:28:42