2010-07-06 7 views
0

코코아 "메모리 관리 프로그래밍 가이드"문서는 말합니다 : 당신은 이름이 "ALLOC"또는 "새로운"또는 포함로 시작하는 방법을 사용하여 만드는 경우코코아 메모리 관리 규칙

당신은 개체의 소유권을 "copy"(예 : alloc, newObject 또는 mutableCopy) 또는 보관 메시지를 보내는 경우. 귀하는 릴리스 또는 자동 릴리스를 사용하여 소유하고있는 오브젝트의 소유권을 포기할 책임이 있습니다. 다른 어떤 시간에 물건을 받으면 그것을 풀어서는 안됩니다.

[NSNumber numberWithFloat :] 또는 [CAAnimation animation]과 같은 편리한 방법에도 적용됩니까? 나는 이것들을 공개해야 할 것인가?

감사합니다.

답변

2

그 문은 특히 마지막 문장

당신은 당신이 그것을 해제하지 않아야합니다 개체를받을 다른 시간, 여전히 편리한 메소드 마찬가지입니다.

이 명시 적 사전에 그들에게 유지 메시지를 전송하지 않는 한 이러한 개체를 해제하지해야한다는 것을 의미합니다.

+0

즉, 자동 출시 된 것입니다. 맞습니까? 감사! – Kay

+0

@Kay : 그렇습니다. 편의 메소드에서 반환 될 때 자동으로 등록됩니다. –

+3

아니요, 소유권이 없으므로 공개하지 말아야 함을 의미합니다. 소유자가 자신의 기억을 관리하는 방법 (보유 + 자동 해제 또는 안 함)은 사용자의 관심사가 아닙니다. –

1

이러한 메서드 이름은 alloc 또는 new으로 시작하지 않으며 copy을 포함하지 않으며 retain도 포함하지 않습니다. 그래서, 아니요 - 당신은 그 메소드가 반환하는 객체를 소유하지 않습니다. 그래서 당신은 그것들을 릴리즈해서는 안됩니다.