2010년 10월 22일 금요일

IOS view 메모리관리 팁

delloc 메소드에
자신이 생성한 UI객체는 release해준다!

-(void) delloc {
      [myui release];
}

viewDidUnload 메소드에
자신이 생성한 UI객체를 nil로 할당 해준다!

 -(void) viewDidUnload {
       self.myui = nil;
}

댓글 2개:

  1. viewdidload에서 생성한 객체는 모두 viewDidUnload에서 release해주는게 바람직합니다.
    메모리 상활에 따라 Controller의 메모리 해제 없이, ios상에서 view만을 pudge시켜버리기 때문에, view pudge가 한번 일어 난 상황에서 view 재진입시, 중복 할당이 될수 있습니다.

    그리고 self.myui=nil; 의 경우 setter를 어떻게 작성했는지 에 따라 다르겠지만, @property(retain) 로 선언되어 있다면 저거 역시 [myui release]와 동일한 코드 이기 때문에 nil할당이라기 보다 메모리 해제가 되는것입니다.
    결국 위 두 코드는 같은 일을 하는데, 시점만 다른것이고, dealloc에서 ui object를 해제 하는것은 조금 위험한 구현입니다.

    저 같은 경우에는 ui에 관련된 object는 viewDidUnload, 비ui관련 object는 dealloc에서 해주는 편이지만, 비ui oject가 메모리를 많이 가지고 있다면, viewDidUnload에서 하기도 합니다.

    조금이라도 도움이 되셨길 바라면, 지나가다가 한자 적습니다 :) 즐거운 개발 하세요 !!

    답글삭제
  2. 좋은 댓글 감사합니다! ^^
    책에 있는내용을 간단히 메모한건데 말씀 주신내용도
    충분히 검토해볼만한 내용이네요 ~

    UI의 재사용성 스펙에 따라 잘 조합해서 써야 겠네요

    답글삭제