这应该自动释放吗?或者有办法手动完成吗?

时间:2011-12-18 18:49:08

标签: objective-c ios xcode memory-management

你好我想知道是否有人可以给我一些关于内存管理的建议。

我有以下内容:

-(NSMutableArray*)addAllObjectesInbetween:(NSMutableArray*)betweenTheTwo{

    NSMutableArray* toReturn = [betweenTheTwo mutableCopy];
    [toReturn insertObject:@"oneObject" atIndex:1];

    return toReturn;
}

现在我知道因为我正在制作一个我必须释放toReturn的mutableCopy但是我不知道该怎么做,因为它被返回到另一个函数。我不想释放它是因为它被发送,但如果我尝试释放它后,它只是没有被调用。所以我在考虑将autorelease添加到mutableCopy,但我不确定这是否是最好的事情......有人可以帮我一把吗?谢谢!

2 个答案:

答案 0 :(得分:2)

是的,这是最好的事情。您也可以在返回时添加它:

return [toReturn autorelease];

这是因为按照惯例,如果您的方法不以init或(包含)copy开头,则必须返回自动释放的对象。如果要返回+1对象,请更改方法名称以使其保持一致。

答案 1 :(得分:1)

您应该自动释放toReturn,或者将您的功能重命名为copy,例如copyAllObjectsInBetween:,或mutableCopy,例如mutableCopyAllObjectsInBetween: