2012-03-23 3 views
1

저는 iOS 개발에 익숙하지만 Obj-C의 메모리 관리 기본 지식에 익숙합니다. 그러나, 사용자 정의 UIViewControllers에 대한 애플의 문서는 나를 조금 혼란스럽게 만들었다.사용자 정의 UIViewController의 메모리 관리

그래서 EntryViewController 개의 배열을 저장하는 PagingController이 있습니다. (그들은 모두 UIViewController입니다.) 이러한 개체는 동적으로로드되며, 물론 적절할 때 릴리스됩니다. 문서가 말한대로 PagingController의보기가 -loadView에 생성되고 self.view에 저장됩니다.
EntryViewController (예 : ctrl)을로드 할 때마다 [self.view addSubview:ctrl.view];으로 전화합니다. 대상 OS가 3.0이고 개인 변수 (_parentViewController)를 수정하고 싶지 않기 때문에 ctrl.parent = self;으로 전화해야합니다. (parent@property(assign) PagingController *parent;로 정의된다) 여기

제 질문은 다음과 같습니다

  1. 나 자신을 self.view을 해제, 또는 UIViewController에 그 처리를 취하고 있습니까?
  2. parent (보유 자산은 EntryViewController)을 보유해야합니까? 모든 자식 뷰 컨트롤러는 부모가 언로드 될 때 해제되기 때문에 나는 무의미하다고 가정합니다.
  3. -dealloc 메서드에서 [self.view removeFromSuperview]EntryViewController으로 호출해야합니까? 문서에서 모든 하위 뷰를 관리해야하므로 자동으로 호출되는지 확실하지 않습니다.

아니면 처음에는 맞춤보기 컨트롤러를 만드는 방법에 대해 혼란 스럽습니까?

+1

타게팅 3.0? 정말? – jrturton

+0

이 질문에 대한 정답을 공유하십시오. 나는 또한 그것을 알고 싶습니다. – Krrish

+0

@jrturton 실제로 3.2입니다. 그러나 제 점은 '-addChildViewController'는 5.0 이후에만 사용 가능하다는 것입니다. 나는 4.x 사용자를 제외하고 싶지 않다. – vbwx

답변

0
  1. , 할당 할 속성을 설정 UIViewController에 그렇지 않으면 사이클을
  2. 뷰 컨트롤러가보기를 걱정 걸릴 것입니다, 당신을을 유지 한거야, 당신은 부모를 유지 안되는
  3. 처리됩니다 (removeFromSuperview는 필요하지 않습니다.)
+0

감사합니다. 이전에 보관주기에 대해 읽었는데 여기에 일어날 수있는 의문이 생겼습니다 ... – vbwx