2010-03-13 3 views

답변

0

mutableCopy는 항상 객체의 retainCount를 증가시킵니다. 따라서 retain, copy 또는 mutableCopy를 사용하는 경우에는 dealloc 메소드에서 해제해야합니다.

당신이해야 그 객체는 다음과 같이, 오토 릴리즈를 사용하여 반환하는 경우 :

[[[NSString alloc] initWithString:@"Test"] autorelease]; 

오토 릴리즈 풀 당신을위한 객체를 해제하고 할당 해제의 방법으로 공개 할 필요가 없습니다.

호프가 도움이됩니다.

+1

그 점을 이해 합니다만, 제가 그 물건을 돌려 주면 어떨까요? – skylerl

+0

죄송합니다, 귀하의 질문에 반환 부분을 놓치지 마십시오. – reinaldoluckman

10

이 방법은 표준 메모리 관리 절차를 따라야합니다. 메서드가 객체를 반환하지만 "alloc", "new", "copy", "create"또는 "retain"이라는 단어를 포함하지 않으면 객체가 자동으로 릴리즈되어야합니다.

해당 단어 중 하나가 포함 된 경우 +1 보유 횟수와 함께 반환되어야합니다. 예를 들어

:

//return an autoreleased object, since there's no copy, create, retain, alloc, or new 
- (id) doSomethingWithFoo:(id)foo { 
    id fooCopy = [foo copy]; 
    [fooCopy doTheNeedful]; 
    return [fooCopy autorelease]; 
} 

//return a +1 object, since there's a copy in the name 
- (id) copySomethingWithFoo:(id)foo { 
    id fooCopy = [foo copy]; 
    [fooCopy doTheNeedful]; 
    return fooCopy; 
} 
관련 문제