Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 我应该解除锁定吗?_Objective C_Macos_Automatic Ref Counting_Nsimage - Fatal编程技术网

Objective 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]

我正在写一个简单的Obj-c应用程序。到目前为止,我还从来不用
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,那么当您不再使用它时,它将自动解除分配