我应该取消NSImage吗?

时间:2016-11-17 16:43:28

标签: objective-c macos automatic-ref-counting nsimage

我正在写一个简单的Obj-c应用程序。到目前为止,我从来没有alloc任何事情,我理所当然地认为ARC将负责内存管理。

但现在我必须致电:

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

完成myImage之后我应该手动dealloc吗?

2 个答案:

答案 0 :(得分:1)

如果您正在使用Objective-C ARC(这是默认设置,而且您说无论如何),factory method - 样式实例化与[[NSImage alloc] init]之间所需的内存管理没有区别 - 风格实例化。当最后一个强引用超出范围时(或者持有引用的最后一个强引用的对象超出范围),您创建的所有内容都将自动释放。

如果您没有使用ARC,则必须在完成后手动执行[myImage release],但除非您为较旧的项目编写代码,否则没有理由不这样做。

答案 1 :(得分:0)

  

完成myImage之后,我应该手动dealloc吗?

这个问题毫无意义。您正在使用ARC。假设答案是肯定的。你会怎么做?你不能。 ARC不允许您提供任何NSObject内存管理命令。

因此答案必须是否。