2010-02-03 6 views

답변

5

둘 다 자동으로 릴리즈되므로 자동으로 릴리즈하지 않아도됩니다.

  • [[SomeClass ALLOC] 초기화 ...]
  • [someObject라는 카피]
  • [: 엄지 손가락의 규칙은 ALLOC하거나 유지 명시 적으로 -copy 또는 +를 보내는 경우 객체를 소유하고 있다는 것입니다 일부 개체 보유]

개체를 소유하고 있다면이를 해제해야합니다. + new는 + alloc과 -init의 바로 가기입니다.

+0

알았지 만 출시가 잘못 되었습니까? 내가 명시 적으로 그렇게하지 않으면 언제 석방 될 것인가? – glutz78

+0

예, 소유하지 않은 오브젝트를 해제하는 것은 잘못입니다. 이것은 "over-release"라고하며, -release (또는 그와 관련된 다른 메시지)가 이미 릴리스 된 객체로 전송되면 충돌을 일으 킵니다. 자동 릴리즈 된 오브젝트는 둘러싸는 NSAutoreleasePool이 릴리즈/드레 인될 때 실제로 릴리즈됩니다 (명시 적으로 사용하지 않으면 이벤트 루프의 각 사이클이 끝날 때 발생합니다). "Cocoa 용 메모리 관리 프로그래밍 가이드"를 참조하십시오. – Costique

5

아니요, 해당 메소드에서 반환 된 날짜는 모두 자동으로 리 릴리스됩니다. 좋은 시민이 되겠지만, 메모리 관리에 대해서는 걱정할 필요가 없습니다. 포인터로 끝내면 포인터를 설정하는 것이 좋습니다.

일반적으로 내가 "차"규칙이라고 부를 수 있습니다. 코코아/코코아 터치에서 Copy, Alloc, Retain, 또는 이라는 단어가있는 방법이면 새로 입력 한은 어느 시점에서 사용자가 출시해야하는 객체를 반환합니다. 이것은 보유 수 +1의 오브젝트를 리턴하는 메소드에 적용된 이름 지정 규칙입니다. 이 메소드를 호출하는 클래스는 객체를 "소유"하며 객체가 끝나면이를 해제 할 책임이 있습니다.

희망이 도움이됩니다.

관련 문제