2009-08-16 6 views

답변

3

보기를 두 번 이상로드 할 수 있으므로 (즉, 또한 언로드되므로 배열을 다시로드해야 할 수도 있음) viewDidLoad으로 호출합니다.

또한 iPhone에서 대부분의 시간 동안 데이터를 지연로드하는 것이 좋습니다. viewDidLoad에 데이터를로드하는 것은 init보다 훨씬 더 게으르다. init를 사용하면 더 나은 성능을 낼 수 있지만 즉시보기 컨트롤러는 사용하지 않는 것이 좋습니다.

+0

괜찮 았지만 viewDidUnload가 호출 될 때 알려주시겠습니까? 보기가 언로드되면 언제 자동으로 발생합니까? 어떻게 수동으로 언로드 할 수 있습니까? – mk12

+1

뷰는 메모리 경고를 수신 할 때 UIViewController에 의해 언로드됩니다.이 시점에서 viewDidUnload가 호출됩니다. viewDidLoad에서 배열을 만들려면 viewDidUnload에서 배열을 파괴해야합니다. 또한보기가 표시되지 않으면 액세스하지 못하도록해야합니다 (보기가 표시되면보기가 언로드되지 않음). 보기가 보이지 않을 때에도 액세스 할 필요가 있다면 (예를 들어 그것을 업데이트하기 위해) init에서 생성하는 것이 좋습니다. Apple에서는 viewDidLoad를 쉽게 다시 만들 수있는 개체에만 사용할 것을 권장합니다. –

+0

init에서 생성하는 대신에 배열을 속성으로 정의하고 처음으로 액세스 할 때 배열을 지연 생성합니다. 최종 결과는 init 메소드와 동일하지만 배열에 액세스하지 않으면 메모리를 사용하지 않습니다. –

2

배열을 저장하려는 의도와 초기화 방법에 따라 다릅니다. viewDidLoad은 여러 번 호출 될 수 있습니다 (특히 프로그램에 메모리 부족 경고가 전송 된 후 - 비활성보기 컨트롤러는보기를 언로드 한 다음 다시 활성화되거나 다시 표시 될 때 다시로드합니다). 반면에 init은 일반적으로 한 번만 호출됩니다 개체의

1

init에서이 작업을 수행하는 경우 중 하나는 viewWillAppear 후에 viewDidLoad를 호출 할 수 있다는 것입니다. 그 시점에 배열이 필요하다면 init에 초기화를 넣어야 할 수도 있습니다.

일반적으로 viewDidLoad는 두 번 이상 호출 될 수 있다는 것을 명심하는 한 꽤 좋은 장소입니다.