2012-04-16 3 views
1

나는 처음에는 섹스를별로 믿지 않았다. (올바르게 설정되지 않았고 후드에서 무슨 일이 일어나고 있는지 분명하지 않기 때문에 충돌 때문에) 나는 그들을 더 많이 사용하고있다. 나는 아직도 정확히 무슨 일이 일어나고 있지 않습니다.segues : seque를 호출하는 컨트롤러 인스턴스는 어떻게됩니까?

ViewController A와 ViewController B 사이에 UINavigationController가 포함되지 않은 segue가 있습니다. 그것은 내가 좋아하는 FlipHorizontal 전환을 수행합니다.

A가 segue를 시작하면 A 인스턴스는 어떻게됩니까? 나는 A의 viewDidUnload 메쏘드에 log 문을 두었고 호출되지 않았다. 아직도 주변에 숨어있는가요? 나는 A의 동일한 인스턴스로 돌아갈 수 있기를 원합니다. 모든 것은 그대로 유지되었지만 어떻게 할지를 파악할 수 없었습니다.

테스트로서, 나는 Nav Controller에 A를 삽입하고 B와 B를 동시에 시도해 보았습니다. 그리고 A의 내 인스턴스로 돌아갈 수 없었습니다. 왜 내가 여기까지 망가 졌습니까?

답변

0

보기와 컨트롤러의 차이점을 기억하십시오. 호출 한 컨트롤러는 여전히 주변에 있으며보기도 마찬가지입니다. 그러나 화면에없는 VIEW는 시스템에서 언로드 할 수 있습니다. viewDidUnload가 호출됩니다.

컨트롤러는 기본적으로 모든 다른 개체와 마찬가지로 모든 참조가 사라질 때까지 존재합니다. 또한 컨트롤러가 소유하고있는 모든 것이 여전히 살아 있습니다. 그러나 그것이 아직 살아있는 동안, 그것은 "당신이 필요로하지 않거나 재건 할 수있는 것을 제거하십시오."라는 두 가지 중요한 메시지를 얻을 수 있습니다.

하나는 viewDidUnload입니다. 다른 하나는 didReceiveMemoryWarning입니다.

그래, 네 NavController 안에 스택 100 뷰 컨트롤러가 있으면 100 뷰 컨트롤러가 모두 주변에 있습니다 ... 일부 뷰는 그렇지 않을 수도 있습니다.

+0

답장을 보내 주셔서 감사합니다. 호출 컨트롤러 (A)를 대상 컨트롤러 (B)에 전달하기위한 유효한 디자인 패턴이 있습니까? 호출 컨트롤러 (A)가 B에 의해 시작된 Segue에서 복귀 할 때 대상 컨트롤러로 설정 될 수 있습니까? 아마 아니지만하지만 내가 묻는 줄 알았는데 –

+0

미안, 나는 어딘가에서 그 질문에 길을 잃었 어. 제 생각에 당신이 묘사하는 것은 위임이나 통보에 의해 처리됩니다. A가 B를 부르기 전에, 그는 b.delegate = self와 같은 것을 할 것이고, B가 끝나면 그는 그가 한 일을 대표에게 알릴 것입니다. A의 대리자 처리기가 컨트롤러를 닫습니다. 내비게이션 컨트롤러를 사용하면 푸시/팝핑이 자동으로 처리됩니다. –

+0

감사합니다 - 나는 그것을 분류했다고 생각합니다. –

관련 문제