앞서 얘기했지만 상위 클래스로 접근하기 위해서는 super키워드를 사용한다.
super 키워드를 사용하여 메시지를 전달하면 상위 클래스를 검사하고 만약 상위클래스에서 메시지 수신자가 없으며 그 상위 클래스로 이동하여 수신자를 검사한다.
보통 클래스를 구현하다가 보면 클래스 내부에 새로운 객체를 만들어 사용하는 경우가 많이 발생한다. 제때에 릴리스를 하면 상관없는데 해당 클래스가 종료될 때 까지 그 객체를 사용해야 하는 경우가 있다.
그런 경우에는 클래스가 메모리에서 사라지기 직전에 사용한 객체를 릴리스하도록 한다.
release는 retain count값을 1씩 줄여 가며 최종적으로 0이 될 때 메모리에서 해제하는 dealloc메서드를 호출하게 된다.
따라서 아래와 같이 dealloc메서드를 재정의 한다.
-(void) dealloc
{
if(새로만든 객체)
{
[새로만든 객체 release];
}
[super release];
}
이렇게 수정하면 프로그램에서 클래스를 릴리스하고 그 클래스가 메모리에서 제거될 때 클래스 안에서 사용한 객체를 릴리스한다.
참고) release 프로세스
1) release
if( RC == 0 ){
dealloc
}else{
RC--;
}