【问题标题】:Should I dealloc NSImage?我应该释放 NSImage 吗?
【发布时间】:2017-04-01 07:46:09
【问题描述】:

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

但现在我必须打电话:

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

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

【问题讨论】:

  • 如果你正在使用 ARC,那么当你不再使用它时它会自动被释放

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    因此答案一定是“否”。

    【讨论】:

      猜你喜欢
      • 2011-03-21
      • 1970-01-01
      • 2016-07-06
      • 2011-04-27
      • 1970-01-01
      • 1970-01-01
      • 2010-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多