【问题标题】:Manual reference counting and AutoRelease手动引用计数和 AutoRelease
【发布时间】:2015-12-21 21:52:47
【问题描述】:

在手动内存管理中,您将使用自动释放的场景

我想做好充分的准备,因为我即将在没有 ARC 的情况下做一个项目

【问题讨论】:

    标签: ios objective-c automatic-ref-counting autorelease reference-counting


    【解决方案1】:

    当您需要从方法返回对象并同时放弃所有权时,通常使用autorelease:返回时调用方(而不是创建方法)应该拥有该对象。

    如果您只是在返回对象之前放弃所有权(使用release),它会立即被释放并且调用方无法使用它。如果您不调用release,则该对象从被调用函数(实例化它)的引用计数为+1,在调用方声明所有权后也没有进一步的机会释放。

    所以,autorelease 就像一个“延迟释放”:对象在稍后的时间(但不是在返回它的函数返回之前)被发送一个释放方法。


    附录:

    另一种方法是返回商定引用计数为 1 的对象,并在完成后依赖调用方释放它。

    通过为这些方法采用预先建立的命名模式来明确这一点:在可可中,它们通常包含“alloc”、“new”、“copy”或“mutalbeCopy”等词。

    来源:Apple's documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-21
      • 2012-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多