我有一个看起来如下的调用方法:
-(void)callingMethod
{
NSMutableString *myStr = [[[NSMutableString alloc] initWithCapacity:0] autorelease];
myStr = [self calledMethod];
}
Run Code Online (Sandbox Code Playgroud)
我叫做的方法:
-(NSMutableString*)calledMethod
{
NSMutableString *newStr = [[NSMutableString alloc] initWithCapacity:0];
// do some stuff with newStr
return [newStr autorelease];
}
Run Code Online (Sandbox Code Playgroud)
我在这里泄漏记忆吗?我觉得我在这里分配了不必要的金额.
不,你没有泄漏记忆,但是你在这里分配不必要金额的直觉是正确的.
至少,您应该考虑重写callingMethod为:
- (void)callingMethod
{
NSMutableString *myStr = [self calledMethod];
}
Run Code Online (Sandbox Code Playgroud)
你也可以整理一下calledMethod:
- (NSMutableString*)calledMethod
{
return [NSMutableString stringWithCapacity:0]; // why 0 capacity?
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
315 次 |
| 最近记录: |