2012-01-15 4 views
4

내보기 컨트롤러에서 콘텐츠를 표시하는 데 사용되는 데이터 구조를 초기화하는 가장 좋은 장소는 다음과 같습니다. init 또는 viewDidLoad?데이터 구조를 초기화하는 위치 : init 또는 viewDidLoad?

또한 어느 경우 에든 내가 풀어 놓아야 할 곳 : dealloc, viewDidUnload 또는 didReceiveMemoryWarning?

+2

UIViewController 하위 클래스가 관련된 레코드의 경우, 선택 사항은'initWithNibName : bundle :'과'viewDidLoad' 사이입니다. Plain'init'은이 클래스들에 대해 지정된 초기화 프로그램이 아닙니다. – NJones

답변

3

전체 encompasing 답변은 ​​"보기 수명주기에 달려 있습니다."입니다. 각 메소드는 뷰가로드되고 표시되는 방식과 관련하여 고유 한 위치를가집니다.

경험적으로 볼 때 기본 설정은 viewDidLoad입니다. XIB보기가 이미 인스턴스화되어 속성을 설정할 수 있습니다. 뷰를 많이로드하고 언로드하는 경우 상당히 정적 인 순수한 데이터를 init 호출로 푸시 할 수 있습니다.

viewWillAppear은보기의 수명주기 및보기가 숨겨져있는 동안 데이터가 변경 될 가능성이 얼마나 큰지에 따라 다른 옵션입니다.

ETA : 할당 된 보완 호출에서 메모리를 해제하십시오. dealloc에서 viewDidUnload 또는 viewDidDisappeardidReceiveMemoryWarning은 초기화하는 위치와 상관없이 항상 언로드 할 수 있어야하며 코드가 다시 활성화되면 데이터를 다시로드 할 수있을만큼 똑똑해야합니다.

+0

NJones가 위의 질문에 대한 언급에서 언급 한 것처럼,'init' 호출은 초기화 된 이니셜 라이저를 의미합니다. 기본값은 initWithNibName : bundle :입니다. 광산을 재 배열하는 경향이 있지만 개인 스타일의 문제입니다. 중요한 것은 지정된 이니셜 라이저가 무엇인지 명확히하는 것입니다 (다른 모든 이니셜 라이저 호출에서 항상 호출되는 한 방법이므로 사용자가 당신의'init'주기에서 무거워 짐). –

관련 문제