본문 바로가기
프로그래밍/iOS

iOS 메모리 관리

by 백룡화검 2011. 6. 2.

1. alloc/copy/new/retain/Create 메소드로 생성 또는 지정한 객체는 개발자 스스로 release 해야한다.

alloc 한만큼 release 해야한다.

2. 위 메소드 이외의 메소드로 생성한 객체는 대부분 autorelease 상태이다.

autorelease 상태의 객체는 그 블럭에서만 유효하고 그 이후에는 언제 사라질지 알수가 없다.
얻어진 객체를 계속 사용하려면 retain 시켜줘야 한다.
위 규칙은 컴파일러에서 보장되는 원칙이 아니다.
따라서 autorelease 상태가 아닐 수 있다.

3. 개발자가 생성한 메소드가 객체를 반환할때는 위 2번 규칙에 따라 만드는 것이 좋다.

나도 헤깔리지 않고, 소스를 넘겨받은 사람도 헤깔리지 않는다.

4. 집합체(NSArray 등) 객체에 객체를 넣을때는 집합체가 자동으로 retain 시킨다.

집합체가 알아서 retain 하고 release 하므로 별다르게 신경쓸게 없다.

5. 개발자가 별도로 집합체를 생성한다면 4번 원칙에 따르는 것이 좋다.

출처 : http://cafe.naver.com/mcbugi/135871