프로그래밍/Object-C2011. 9. 4. 14:28
모든 클래스 인스턴스들은 자신이 사용되고 있는 횟수를 알려주는 레퍼런스 카운트(참조 카운트)를 내부에 가지고 있다. 이 값은 처음 생성될 때 1이 되고, 쓰이는 곳이 늘어나고 줄어들 때마다 그 값이 증가하고 감소한다. 만약 레퍼런스 카운트가 0이 되면 해당 객체는 메모리에서 해재된다.
  객체의 레퍼런스 카운트를 변화시키는 메소드들은 다음과 같다. 메소드 앞에 +가 있으면 클래스 메소드, - 이면 인스턴스 메소드다.


 
+alloc과 -copy 메소드는 새로운 인스턴스를 생성한다. 따라서 새로 생성된 인스턴스의 레퍼런스 카운트는 1이 된다.

-retaion 메소드는 이미 생성되어 있는 클래스 인스턴스를 사용한다. 따라서 해당 인스턴스의 레퍼런스 카운트가 1 증가한다.

-release 메소드는 사용 중인 인스턴스를 제거한다. 따라서 해당 인스턴스의 레퍼런스 카운트가 1 감소한다.

-dealloc 메소드는 변수가 사용하던 메모리를 해제한다. 모든 객체가 공통으로 가지고 있는 메소드이다. 이 메소드는 직접 호출되는 것이 아니라 인스턴스의 레퍼런스 카운트가 0이 될 때 자동으로 호출된다.


출처 - 도전! 아이폰4 프로그래밍





'프로그래밍 > Object-C' 카테고리의 다른 글

스레드 사용하기  (0) 2011.09.04
객체 제거하기(메모리 해제)  (0) 2011.09.04
객체 생성하기(메모리 할당과 초기화)  (0) 2011.09.04
AppDelegate 전역변수 사용  (0) 2011.09.03
userInteractionEnabled  (0) 2011.09.03
Posted by 건깡