当我们返回一个对象时,应该在什么时候释放它?

3

请查看以下方法:

-(NSMutableArray*)provideRequestArray{
    NSMutableArray* requestArray=[[NSMutableArray alloc] initWithObjects:@"MyString",nil];
    return requestArray;
}

现在问题来了,requestArray应该在什么时候被释放,以避免产生后果。


你的方法名表明你要获取一个字符串,为什么返回了一个数组? - Pierre
啊..因为一开始我一直在处理字符串。 - rptwsthi
1个回答

5

发送autorelease消息返回该对象。

// initWithFormat: ??
NSMutableArray* requestArray=[[NSMutableArray alloc]
                              initWithFormat:@"MyString"];
return [requestArray autorelease];

或者使用自动释放的对象(例如使用array类方法):
NSMutableArray* requestArray= [NSMutableArray array];
return requestArray;

请查看这里的文档 (链接),了解相关的IT技术。


那么如果我将对象自动释放,会有什么影响呢? - rptwsthi
autorelease对象将在稍后释放。因此,发送者可能会“retain”该对象。 - user756245
我们可以使用 return [classObject autorelease]; 吗? - rptwsthi
只有在你拥有并需要返回给发送者的对象上使用autorelease。如果classObject是你从消息发送中获得的自动释放对象,则不需要使用它。 - user756245
哦,实际上classObject是一个类的对象,它不是自动释放的。 - rptwsthi
1
因此,在返回之前,请自动释放它。 - user756245

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接