【问题标题】:Cocoa memory management ruleCocoa 内存管理规则
【发布时间】:2011-03-12 07:18:49
【问题描述】:

Cocoa“内存管理编程指南”文档说:

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

这是否也适用于 [NSNumber numberWithFloat:] 或 [CAAnimation 动画] 等便捷方法?我应该释放这些吗?

谢谢!

【问题讨论】:

    标签: cocoa cocoa-touch memory-management


    【解决方案1】:

    这些方法名称不以allocnew 开头,也不包含copy,也不是retain。所以,不——你不拥有这些方法返回的对象,所以你不应该释放它们。

    【讨论】:

      【解决方案2】:

      对于方便的方法,这句话仍然是正确的,尤其是最后一句

      任何其他时候你收到一个对象, 你不能释放它。

      这意味着您必须释放这些对象,除非您事先明确向它们发送保留消息。

      【讨论】:

      • @Kay:是的,当它们从便捷方法返回时会自动释放。
      • 不,这意味着您没有它们的所有权,因此您不应该释放它们。他们的所有者如何选择管理他们的内存(是否保留+自动释放)与您无关。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多