Objective-C / Cocoa:我这里有内存泄漏吗?

时间:2009-04-06 20:01:50

标签: objective-c cocoa

我有一个看起来如下的调用方法:

-(void)callingMethod
{
     NSMutableString *myStr = [[[NSMutableString alloc] initWithCapacity:0] autorelease];
     myStr = [self calledMethod];
}

我称之为方法:

-(NSMutableString*)calledMethod
{
    NSMutableString *newStr = [[NSMutableString alloc] initWithCapacity:0];
    // do some stuff with newStr
    return [newStr autorelease];
}

我在这里泄漏记忆吗?我觉得我在这里分配了不必要的金额。

1 个答案:

答案 0 :(得分:6)

不,你没有泄露记忆,但你在这里分配不必要金额的直觉是正确的。

至少应考虑将callingMethod重写为:

- (void)callingMethod
{
    NSMutableString *myStr = [self calledMethod];
}

您还可以将calledMethod整理为:

- (NSMutableString*)calledMethod
{
    return [NSMutableString stringWithCapacity:0]; // why 0 capacity?
}