해제 NSArray를?는
Q
는
2
A
답변
0
아니요, 각 할당 및 각 보유에 대해 개체를 릴리스해야합니다. (그리고 당신은 객체에게 어쨌든 이상의 1 시간을 ALLOC 수 없습니다.)
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
당신이 그때는 아마 뭔가 잘못하고있다 alloc
과 NSArray
과 같은 줄에 retain
를 작성하는 경우.
개체는 +1의 보유 수를 가진 alloc
이며, 따라서 retain
을 호출 할 필요가 없습니다.
직접 질문에 답변하십시오. 네, release
두 번해야합니다. 한 번 당신이 객체를 만들었고 한 번 왜냐하면 당신은 retain
을 편집했습니다. 그러나 나는 왜 당신이 그것을 여분의 시간으로 유지해야하는지에 대해 질문 할 것입니다.
2
보유 할 필요가 없습니다. alloc/init 할 때 이미 객체를 보유하거나 소유권을 얻습니다. Memory Management Programming Guide for Cocoa을 다시 방문하십시오.
그렇습니다. –
@Peter : 나쁘다, 나는 같은 줄에 alloc과 init를 써서 * 읽었다. 내일 내 대답을 삭제하겠습니다. –