2016-11-17 100 views
-2

我在寫一個簡單的Obj-c應用程序。到目前爲止,我從來都不需要任何東西,我認爲ARC會照顧內存管理。我應該釋放NSImage嗎?

但現在我有打電話:

NSImage *myImage = [[NSImage alloc] initByReferencingFile: pathToMyImg]; 

我與myImage我應該手動dealloc它完成後?

+1

如果您使用的是ARC,那麼當您不再使用它時,它將自動解除分配 – Alex

回答

1

如果您使用的是Objective-C ARC(這是默認設置,並且您說過無論如何),則在factory method樣式實例化和[[NSImage alloc] init]樣式實例化之間所需的內存管理沒有區別。當最後一個強參考超出範圍(或持有參考的最後一個強參考的對象超出範圍)時,您創建的所有內容都將自動釋放。

如果您沒有使用ARC,那麼在完成此操作後,您必須手動執行[myImage release],但除非您正在爲較舊的項目編寫代碼,否則沒有理由不去做。

0

當我完成myImage我應該手動dealloc嗎?

這個問題沒有意義。您正在使用ARC。假設答案是肯定的。你會怎麼做?你不能。 ARC不會讓你提供任何NSObject內存管理命令。

因此答案必須是No.