iOS를 접하면서 가장 크게 겪고 있는 혼란(?)이 바로 요 "객체의 생성과 해제"부분입니다. JAVA에서는 new를 통해 객체를 선언만 해준다면, 알아서 초기화를 하고 '가비지 컬렉터'를 통해 자동으로 사용하지 않는 객체를 회수합니다.
물론 Xcode 4.2 부터는 ARC(Automatic Refrence Counting)이 생겨 release메소드를 사용하지 않고도 객체의 참조횟수와 변수의 규칙에 따라 객체를 해제하지만,
- 잠시 ARC에 대해 짚고 넘어가자면, ARC는 객체를 참조한 횟수 (Refrence Count)와 변수의 유효영역 규칙(Scope Rule)에 따라 객체를 해제하는 것을 의미하며, 변수를 사용하고 해제 할 때 참조횟수가 1이 감소하고 이 값이 0이하이면 객체를 알아서 해제 하는 이론으로 동작한다. 이를 위해 Objective-C Compiler는 객체가 생성된 영역을 벗어날 경우 그 위치에 객체 소멸코드를 자동으로 삽입하여 컴파일. 물론 컴파일 단계에서 진행되므로, 소스코드 단계에서는 코드가 보이지 않는다. ARC의 개념에 대해서는 자세한 설명이 웹엔 없었는데, Xcode 4 서적 중에 설명되어 있는 부분이 있어 참조.
: ARC에 대해서는 iOS프로그래밍 Category내 ARC에 좀 더 자세히 설명되어 있음.
이 ARC를 참조해서 코딩을 하면 좋겠지만... 정확하게 객체를 생성하고 다시 해제하는 걸 이해하지 못한 지금 상황에서 ARC를 쓰는 건 사치라는 생각에 당분간은 원칙대로 생성하고 해제 하는 방식으로 코딩을 진행중입니다. 어쨌꺼나 Objective-C에서는 일일이 alloc메서드를 통해 메모리를 할당하고(자바에서 new) 다시 release메소드를 사용해서 해제를 진행해야 합니다.
[관련 예제는 추후 포함하겠습니다!]
'옛글 > 아이폰 프로그래밍' 카테고리의 다른 글
[iOS프로그래밍] Protocol ? (1) | 2012.05.06 |
---|---|
[iOS프로그래밍] XCode Singleton 개념잡기 (1) | 2012.05.04 |
[iOS프로그래밍] 가로모드, 세로모드 고정시키기 (0) | 2012.05.03 |
[iOS프로그래밍] NSDictionary를 파헤쳐보자 (1) | 2012.05.03 |
[iOS프로그래밍] Xcode 4.2 Bad Access 오류는 NSZombieEnabled로 잡자! (1) | 2012.05.03 |