2010-02-21 5 views

답변

0

아니요, 각 할당 및 각 보유에 대해 개체를 릴리스해야합니다. (그리고 당신은 객체에게 어쨌든 이상의 1 시간을 ALLOC 수 없습니다.)

+1

그렇습니다. –

+0

@Peter : 나쁘다, 나는 같은 줄에 alloc과 init를 써서 * 읽었다. 내일 내 대답을 삭제하겠습니다. –

0

당신이

NSArray* arrayObject; 
arrayObject = [[NSArray alloc] init]; 
arrayObject = [[NSArray alloc] init]; 
... 

다음 그냥 잘못된 코드를 할 경우. 후자의 과제는 누수의 원인이되는 이전 것을 포함 할 것입니다. 어느 쪽이 객체를 사용, 한 번 그들 각각 을 해제 :

NSArray* arrayObject1, arrayObject2; 
arrayObject1 = [[NSArray alloc] init]; 
arrayObject2 = [[NSArray alloc] init]; 
... 
[arrayObject1 release]; 
[arrayObject2 release]; 

또는 다른 초기화하기 전에 개체 를 놓습니다.

NSArray* arrayObject; 
arrayObject = [[NSArray alloc] init]; 
... 
[arrayObject release]; 
arrayObject = [[NSArray alloc] init]; 
... 
[arrayObject release]; 
7

당신이 그때는 아마 뭔가 잘못하고있다 allocNSArray과 같은 줄에 retain를 작성하는 경우.

개체는 +1의 보유 수를 가진 alloc이며, 따라서 retain을 호출 할 필요가 없습니다.

직접 질문에 답변하십시오. 네, release 두 번해야합니다. 한 번 당신이 객체를 만들었고 한 번 왜냐하면 당신은 retain을 편집했습니다. 그러나 나는 왜 당신이 그것을 여분의 시간으로 유지해야하는지에 대해 질문 할 것입니다.