2016-11-17 123 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.

相关问题