Objective c 我应该解除锁定吗?
我正在写一个简单的Obj-c应用程序。到目前为止,我还从来不用Objective c 我应该解除锁定吗?,objective-c,macos,automatic-ref-counting,nsimage,Objective C,Macos,Automatic Ref Counting,Nsimage,我正在写一个简单的Obj-c应用程序。到目前为止,我还从来不用alloc任何东西,我理所当然地认为ARC会负责内存管理 但现在我必须打电话: NSImage *myImage = [[NSImage alloc] initByReferencingFile: pathToMyImg]; 在我完成myImage之后,我是否应该手动dealoc它?如果您使用的是Objective-C ARC(这是默认设置,并且您说您无论如何都是),那么-style实例化和[[NSImage alloc]init]
alloc
任何东西,我理所当然地认为ARC会负责内存管理
但现在我必须打电话:
NSImage *myImage = [[NSImage alloc] initByReferencingFile: pathToMyImg];
在我完成
myImage
之后,我是否应该手动dealoc
它?如果您使用的是Objective-C ARC(这是默认设置,并且您说您无论如何都是),那么-style实例化和[[NSImage alloc]init]
样式实例化之间所需的内存管理没有区别。当最后一个强引用超出范围(或包含引用的最后一个强引用的对象超出范围)时,您创建的所有内容都将自动释放
如果您没有使用ARC,那么在使用完它之后,您必须手动执行[myImage release]
,但是没有理由不这样做,除非您正在为旧项目编写代码
完成myImage
后,我是否应该手动dealloc
it
这个问题毫无意义。您正在使用ARC。假设答案是肯定的。你会怎么做?你不能。ARC不允许您发出任何NSObject内存管理命令
因此答案必须是否定的。如果您正在使用ARC,那么当您不再使用它时,它将自动解除分配