'dealloc'에 해당되는 글 1건

  1. 2010.04.11 dealloc메서드와 super키워드
Objective C/상속2010. 4. 11. 22:44
앞서 얘기했지만 상위 클래스로 접근하기 위해서는 super키워드를 사용한다. 
super 키워드를 사용하여 메시지를 전달하면 상위 클래스를 검사하고 만약 상위클래스에서 메시지 수신자가 없으며 그 상위 클래스로 이동하여 수신자를 검사한다. 

보통 클래스를 구현하다가 보면 클래스 내부에 새로운 객체를 만들어 사용하는 경우가 많이 발생한다. 제때에 릴리스를 하면 상관없는데 해당 클래스가 종료될 때 까지 그 객체를 사용해야 하는 경우가 있다. 
그런 경우에는 클래스가 메모리에서 사라지기 직전에 사용한 객체를 릴리스하도록 한다.

release는 retain count값을 1씩 줄여 가며 최종적으로 0이 될 때 메모리에서 해제하는 dealloc메서드를 호출하게 된다. 
따라서 아래와 같이 dealloc메서드를 재정의 한다. 
-(void) dealloc
{
     if(새로만든 객체)
      {
[새로만든 객체 release];
       }
     [super release];
}

이렇게 수정하면 프로그램에서 클래스를 릴리스하고 그 클래스가 메모리에서 제거될 때 클래스 안에서 사용한 객체를 릴리스한다.

참고) release 프로세스
1) release 
if( RC == 0 ){
   dealloc
}else{
   RC--;
}

Posted by 버터백통