我在写一个简单的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