2009-04-06 2 views
1

다음과 같은 호출 메서드가 있습니다.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]; 
} 

여기서 메모리 누수가 있습니까? 나는 여기에 불필요한 금액을 할당하고있는 것처럼 느낀다.

+0

아차, calledMethod이 * 인 NSMutableString을 반환하거나있는 NSString한다 * 또는 ID 최소한

, 당신은 callingMethod 등을 다시 작성해야 . –

답변

6

아니요, 메모리가 누출되지는 않지만 여기에 불필요한 금액을 할당한다는 본능이 맞습니다.

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

당신이 할 수있는 최대 또한 정돈 calledMethod로 :

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

하하하 ... 편집 제이슨에게 감사드립니다. 원숭이 무효 참조, 원숭이 복사 무효 :-) –

+0

그는 callingMethod에서 myStr을 공개하지 않습니다. 메모리 누수가 아닌가? – euphoria83

+0

좋은 질문 ... 아니요, [NSMutableString stringWithCapacity] 호출 ([[NSMutableString alloc] init]과 반대 됨)을 사용하여 만들어 졌으므로 myStr이 자동으로 리사이팅 된 이후가 아닙니다. –

관련 문제