我在寫一個簡單的Obj-c應用程序。到目前爲止,我從來都不需要任何東西,我認爲ARC會照顧內存管理。我應該釋放NSImage嗎?
但現在我有打電話:
NSImage *myImage = [[NSImage alloc] initByReferencingFile: pathToMyImg];
我與myImage
我應該手動dealloc
它完成後?
我在寫一個簡單的Obj-c應用程序。到目前爲止,我從來都不需要任何東西,我認爲ARC會照顧內存管理。我應該釋放NSImage嗎?
但現在我有打電話:
NSImage *myImage = [[NSImage alloc] initByReferencingFile: pathToMyImg];
我與myImage
我應該手動dealloc
它完成後?
如果您使用的是Objective-C ARC(這是默認設置,並且您說過無論如何),則在factory method樣式實例化和[[NSImage alloc] init]
樣式實例化之間所需的內存管理沒有區別。當最後一個強參考超出範圍(或持有參考的最後一個強參考的對象超出範圍)時,您創建的所有內容都將自動釋放。
如果您沒有使用ARC,那麼在完成此操作後,您必須手動執行[myImage release]
,但除非您正在爲較舊的項目編寫代碼,否則沒有理由不去做。
當我完成
myImage
我應該手動dealloc
嗎?
這個問題沒有意義。您正在使用ARC。假設答案是肯定的。你會怎麼做?你不能。 ARC不會讓你提供任何NSObject內存管理命令。
因此答案必須是No.
如果您使用的是ARC,那麼當您不再使用它時,它將自動解除分配 – Alex