【发布时间】:2015-12-21 21:52:47
【问题描述】:
在手动内存管理中,您将使用自动释放的场景
我想做好充分的准备,因为我即将在没有 ARC 的情况下做一个项目
【问题讨论】:
标签: ios objective-c automatic-ref-counting autorelease reference-counting
在手动内存管理中,您将使用自动释放的场景
我想做好充分的准备,因为我即将在没有 ARC 的情况下做一个项目
【问题讨论】:
标签: ios objective-c automatic-ref-counting autorelease reference-counting
当您需要从方法返回对象并同时放弃所有权时,通常使用autorelease:返回时调用方(而不是创建方法)应该拥有该对象。
如果您只是在返回对象之前放弃所有权(使用release),它会立即被释放并且调用方无法使用它。如果您不调用release,则该对象从被调用函数(实例化它)的引用计数为+1,在调用方声明所有权后也没有进一步的机会释放。
所以,autorelease 就像一个“延迟释放”:对象在稍后的时间(但不是在返回它的函数返回之前)被发送一个释放方法。
另一种方法是返回商定引用计数为 1 的对象,并在完成后依赖调用方释放它。
通过为这些方法采用预先建立的命名模式来明确这一点:在可可中,它们通常包含“alloc”、“new”、“copy”或“mutalbeCopy”等词。
【讨论】: