我应该释放 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.
我正在编写一个简单的 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 manuallydealloc
it?
这个问题毫无意义。您正在使用 ARC。假设答案是肯定的。你会怎么做?你不能。 ARC 不会让你给出任何 NSObject 内存管理命令。
所以答案一定是No.