【问题标题】:Do you need to release parameters of methods at the end of them in Objective-C?在 Objective-C 中是否需要在方法的末尾释放参数?
【发布时间】:2011-02-21 08:27:31
【问题描述】:

如果我有一个参数传递给一个方法,我需要在方法结束时释放参数吗?

【问题讨论】:

    标签: iphone objective-c parameters methods narc


    【解决方案1】:

    除非您直接使用基础对象,否则您现在应该将所有这些都委托给 ARC。

    【讨论】:

      【解决方案2】:

      没有。想想 NARC:“新分配保留副本”。如果你没有做任何这些事情,你就不需要释放。

      【讨论】:

      • 说真的。太棒了。如果您假设一个 Stooge 的声音并在分析内存管理问题的代码时想到“Narc narc narc”,那么效果很好......
      • thyrgle - 没有人比我更惊讶!主要是因为我认为几乎每个人都新 NARC 的首字母缩写词。对许多人来说,这似乎是(好)消息!
      【解决方案3】:

      请阅读Cocoa memory management guidelines。以下规则与您的问题相关:

      如果您使用名称以“alloc”或“new”开头或包含“copy”的方法(例如,alloc、newObject 或 mutableCopy)创建对象,或者向其发送保留消息。您有责任放弃使用 release 或 autorelease 拥有的对象的所有权。其他任何时候您收到物品时,都不得释放它。

      很明显,您没有通过创建参数来获取参数(在您的方法中)。因此,您需要担心的唯一部分是您是否在方法中保留了它们。如果你这样做了,你必须释放或自动释放它们。如果没有,则不得释放或自动释放它们。

      【讨论】:

        【解决方案4】:

        只有在您的方法中 retain 时才需要释放它们。按照惯例,调用者负责确保作为参数传递的对象至少在调用处于活动状态时仍然存在。

        【讨论】:

          猜你喜欢
          • 2014-10-05
          • 1970-01-01
          • 1970-01-01
          • 2010-10-07
          • 2017-10-14
          • 1970-01-01
          • 1970-01-01
          • 2011-12-13
          • 2011-01-12
          相关资源
          最近更新 更多