我有一个看起来如下的调用方法:
-(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];
}
我在这里泄漏记忆吗?我觉得我在这里分配了不必要的金额。
答案 0 :(得分:6)
不,你没有泄露记忆,但你在这里分配不必要金额的直觉是正确的。
至少应考虑将callingMethod
重写为:
- (void)callingMethod
{
NSMutableString *myStr = [self calledMethod];
}
您还可以将calledMethod
整理为:
- (NSMutableString*)calledMethod
{
return [NSMutableString stringWithCapacity:0]; // why 0 capacity?
}