나는 UIWindow
을 만들고 키로 만들고 didFinishLaunching
에서 볼 수 있으며 나중에 또 다른 UIWindow
을 만들고 키와 눈에 띄게 만듭니다. 첫 번째 창은 버려지고 메모리와 두 번째 창에서 해제 될 것으로 예상됩니다. 그러나 디버거 (디버그 뷰 계층 구조)에서 볼 수 있듯이 둘 다 계층 구조에 있습니다.키 윈도우를 바꿀 수 있습니까?
정상입니까? 두 객체가 메모리에 왜
UPDATE
문제는 아니다. 둘 다 왜 뷰 계층 구조에 있는지 알고 싶습니다. 어떻게 그 중 하나를 거기에서 제거 할 수 있습니까?
참고 : 키 창에는 수퍼 뷰가 없으므로 간단히 removeFromSuperview
으로 전화를 걸 수는 없습니다. 당신의 AppDelegate
가 첫 번째 창을 유지하는 경우
모든 참조를 제거하여 할당을 해제하거나 숨길 수 있도록 창을 제거합니다. – dan
@dan 내가 어딘가에 강한 참고를 가지고있을 수도 있습니다. 그러나 첫 번째 창이 계층 구조 자체에 포착 된 것으로 의심됩니다. 보기 계층 구조에 추가 할 때보기와 같이 발생합니다. 그게 사실이라고 생각하지 않아? –
아니요, 수퍼 뷰가 뷰 계층을 유지하므로 뷰 계층 구조의 뷰는 유지됩니다. 수퍼 뷰가없는 창이 뷰 계층 구조에 보관되지 않습니다. – dan