在手动内存管理中,您将选择自动发布的场景
我希望做好充分的准备,因为我即将在没有ARC的情况下进行项目
答案 0 :(得分:3)
当您需要从方法返回一个对象时,通常使用autorelease
,并同时放弃所有权:返回时,调用方(不是创建方法)应该拥有该对象。
如果您在返回对象之前放弃所有权(使用release
),则会立即取消分配并且主叫方无法使用它。如果你没有调用release
,那么该对象的被调用函数(实例化它)的引用计数为+1,在调用方声明所有权后,它也没有更多机会释放。
因此,autorelease
就像一个“延迟释放”:对象在稍后发送一个释放方法(但不会在返回它的函数返回之前)。
另一种方法是返回约定引用计数为1的对象,并在完成后依赖主叫方释放它。
通过对这些方法采用预先建立的命名模式,明确了这一点:在cocoa中,它们通常包含“alloc”,“new”,“copy”或“mutalbeCopy”等字样。