2016-12-07 1 views
2

나는 UIWindow을 만들고 키로 만들고 didFinishLaunching에서 볼 수 있으며 나중에 또 다른 UIWindow을 만들고 키와 눈에 띄게 만듭니다. 첫 번째 창은 버려지고 메모리와 두 번째 창에서 해제 될 것으로 예상됩니다. 그러나 디버거 (디버그 뷰 계층 구조)에서 볼 수 있듯이 둘 다 계층 구조에 있습니다.키 윈도우를 바꿀 수 있습니까?

정상입니까? 두 객체가 메모리에 왜

UPDATE

문제는 아니다. 둘 다 왜 뷰 계층 구조에 있는지 알고 싶습니다. 어떻게 그 중 하나를 거기에서 제거 할 수 있습니까?

참고 : 키 창에는 수퍼 뷰가 없으므로 간단히 removeFromSuperview으로 전화를 걸 수는 없습니다. 당신의 AppDelegate가 첫 번째 창을 유지하는 경우

enter image description here

+0

모든 참조를 제거하여 할당을 해제하거나 숨길 수 있도록 창을 제거합니다. – dan

+0

@dan 내가 어딘가에 강한 참고를 가지고있을 수도 있습니다. 그러나 첫 번째 창이 계층 구조 자체에 포착 된 것으로 의심됩니다. 보기 계층 구조에 추가 할 때보기와 같이 발생합니다. 그게 사실이라고 생각하지 않아? –

+0

아니요, 수퍼 뷰가 뷰 계층을 유지하므로 뷰 계층 구조의 뷰는 유지됩니다. 수퍼 뷰가없는 창이 뷰 계층 구조에 보관되지 않습니다. – dan

답변

0

, 그것을 풀어 않을거야. 물론 생성 된 윈도우를 키로 설정할 수 있습니다. makeKeyAndVisible 메서드는 윈도우 키를 만들어 같은 레벨의 다른 윈도우 앞에 이동합니다.

+0

빠른 답변 주셔서 감사합니다. 나는 앱 위임자의 첫 번째 창에 대한 강력한 참조를 유지하지 않습니다 (어쩌면 내가 다른 곳에서 가지고 있지만 ...). 그러나 질문은 이것에 관한 것이 아니라, 충분히 명확하게하지 않는 것에 대해 유감스럽게 생각합니다. 나는 그 질문을 갱신했다. 이것을 봐주세요. –

관련 문제