我应该释放 NSImage 吗?

Should I dealloc NSImage?

我正在编写一个简单的 Obj-c 应用程序。到目前为止,我从来不需要 alloc 任何东西,我理所当然地认为 ARC 会负责内存管理。

但现在我必须打电话:

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

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

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

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

After I'm done with myImage should I manually dealloc it?

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

所以答案一定是No.