我正在閱讀教程書。當我看到一個例子時,我感到困惑。 以下代碼顯示延遲加載的方式。實例釋放後,這個動機數組是否會被釋放?或者它會佔用這個內存塊直到應用程序終止。關於延遲加載的內存
+ (NSArray *)motivations
{
static NSArray *motivations = nil;
if (!motivations)
{
motivations = [[NSArray alloc] initWithObjects:@"Greed",@"Revenge",@"Bloodlust",@"Nihilism",@"Insanity",nil];
}
return motivations;
}
編輯1 感謝喬治的一個bug。
請注意,'static'隻影響指針'motivations'的存儲,數組的生命期完全獨立於它。 – 2010-09-15 02:49:19
至於圖像,在iPhone SDK下,imageNamed會將圖像緩存在系統中。是否有必要再次在代碼中緩存圖像? – AechoLiu 2010-09-15 03:06:13
有兩件事:1 /你不能控制imageNamed,它會緩存什麼,什麼不會。例如,您肯定不想緩存3或10 MB的映像。 2 /無法使用imageNamed加載所有圖像,例如,圖像位於系統中的特定路徑或從互聯網下載的圖像 – vodkhang 2010-09-15 03:13:38