2012-11-20 3 views
0
NSMutableArray * arrayTest; 

-(void) setContent 
{ 
    //must I call [array removeAllObjects]; ? 
    arrayTest = [[NSMutableArray alloc] init] 

    [arrayTest addObject:@"str"]; 
    ...//add many objects 
} 

다른 코드 단편에서이 함수를 호출합니다. 전에 arrayTest 의AllObjects를 제거한 다음 매번 arrayTest에 메모리를 할당해야합니까? ARC를 사용합니다. 이 함수를 호출 할 때마다 내 앱 메모리가 증가하는 것을 원하지 않습니다.IOS ARC NSMutableArray는 새 메모리를 할당하기 전에 제거해야합니다.

답변

3

아니요, 괜찮습니다. ARC 또는 비 ARC에서 removeAllObjects으로 전화하지 않아도됩니다.

이전 배열을 할당 해제하면 이전 배열에있는 모든 개체가 해제됩니다.

+1

ARC가 아닌 경우 먼저 [arrayTest release]를 호출하거나 할당 후 어느 지점에서 자동으로 꺼내야합니다. – mrb

+0

물론. 나는 그것이 언급하는 것이 명백하다고 생각했다. :) – rmaddy

1

메모리를 할당하기 전에 arrayTest가 있는지 확인하십시오. 당신이하지 않으면 당신은 배열을 지키길 원한다고 가정하고 메소드가 호출 될 때마다 새로운 배열을 가질 것이다. 아니면 더 나은 .. 클래스의 초기화로 alloc을 이동하십시오.

-(void) setContent 
{ 
    if(!arrayTest){ 
     arrayTest = [[NSMutableArray alloc] init]; 
    } 

    [arrayTest addObject:@"str"]; 
    ...//add many objects 
} 
관련 문제