手动引用计数和自动释放

时间:2015-09-24 10:21:26

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

在手动内存管理中,您将选择自动发布的场景

我希望做好充分的准备,因为我即将在没有ARC的情况下进行项目

1 个答案:

答案 0 :(得分:3)

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

如果您在返回对象之前放弃所有权(使用release),则会立即取消分配并且主叫方无法使用它。如果你没有调用release,那么该对象的被调用函数(实例化它)的引用计数为+1,在调用方声明所有权后,它也没有更多机会释放。

因此,autorelease就像一个“延迟释放”:对象在稍后发送一个释放方法(但不会在返回它的函数返回之前)。

附录:

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

通过对这些方法采用预先建立的命名模式,明确了这一点:在cocoa中,它们通常包含“alloc”,“new”,“copy”或“mutalbeCopy”等字样。

来源:Apple's documentation