是不是在Objective-C中,如果方法不是alloc,new或copy,那么你不进行发布,它应该在自动释放池中?

时间:2012-05-13 12:08:56

标签: objective-c nsautoreleasepool

似乎在Objective-C中有一个标准约定,如果方法是allocnewcopy,那么:您现在拥有新的所有权对象,所以你应该使用[obj release]释放它(假设这不是ARC)。

但是,如果获取新实例的方法是“方便方法”,例如[NSMutableArray arrayWithCapacity:100],那么因为它不是allocnew或{{ 1}},所以按照惯例,新对象是在自动释放池中,你从不担心释放它?

2 个答案:

答案 0 :(得分:2)

是的,如果您没有分配对象,则无需释放它。 (根据你的假设当然)

答案 1 :(得分:2)

是的,这是真的。这是Objective-C reference that defines the rule(这更像是一个约定,但是如果你不遵守约定,clang静态分析器会反对。)