당신이보고있는 것은 window restoration입니다. 이 문서 (문서 기반 응용 프로그래밍 가이드의 일부)는 다음과 같이 설명합니다.
문서 아키텍처는 창 복원 프로세스에서 다음 단계를 구현합니다. 단계는 그림 5-2에 표시된 숫자에 상관 관계 :
- 공유
NSDocumentController
객체의 클래스에 문서 윈도우의 복원 클래스를 설정 setDocument:
NSWindowController
방법. NSWindow
개체는 상태가 변경 될 때마다 invalidateRestorableState
을 보냄으로써 복원 가능 상태를 무효화합니다.
- 다음 적절한시기에 Cocoa는 an
encodeRestorableStateWithCoder:
message 창을 보내고 식별 및 상태 정보를 전달 된 인코더로 인코딩합니다.
시스템이 다시 시작되면 Cocoa는 앱을 다시 실행하고 restoreWindowWithIdentifier:state:completionHandler:
메시지를 NSApp
개체로 보냅니다.
애플 리케이션은이 방법을 재정 의하여 새로운 복원 클래스를 대체하거나 별도의 번들에서로드하는 등의 창 복구에 필요한 일반 작업을 수행 할 수 있습니다.
NSApp
[이 경우에, 문서 제어기의 급 - 피터] 복원 클래스 객체 the restoreWindowWithIdentifier:state:completionHandler:
message를 전송 윈도우의 복원 클래스를 디코딩하고 YES
를 반환한다.
- 복원 클래스는 문서를 다시 열고 창을 찾습니다. 그런 다음 전달 된 완료 핸들러를 윈도우를 매개 변수로 호출합니다.
- 코코아는 the
restoreStateWithCoder:
message을 창으로 보냅니다.이 창은 전달 된 NSCoder
개체에서 복원 가능한 상태를 디코딩하고 해당 콘텐츠의 세부 정보를 복원합니다. 는
[그림 5-2, 뷰, 다른 대응하고, 문서를 저장 및 복원받을 것을 설명하는 단락도]
응용 프로그램이 재발되어
는, 코코아는 관련에 restoreStateWithCoder:
메시지를
를 전송 개체를 차례로 : NSApplication
개체로, 다음에 각각 NSWindow
개체로, 다음으로 NSWindowController
개체로, 다음으로 NSDocument
개체로, 그리고 나서 저장된 상태를 갖는 각보기로 이동합니다.
은 문서 관련이 아닌 창에도 사용되지만 문서 기계는 대부분 사용자에게 더러운 작업을 처리합니다.창 복원의 양면 (아마도 양면)에서 무엇인가를해야하는 경우 문서에서 encodeRestorableStateWithCoder:
및 restoreStateWithCoder:
을 무시하십시오. 전자는 선택과 같은 일시적인 정보를 저장하는 곳이고 후자는 부활 된 문서와 창에서 해당 정보를 복원하는 곳입니다.
코더의 존재는이 당신에 의존한다 (창 복원의 맥락에서) 문서화 된 사실은 아니지만 문서가 아니라 init
initWithCoder:
를 사용하여 초기화되는 것을 의미한다.
"NSDocument"가 "어딘가에 저장되어 있기 때문에"init 메소드 등을 통해 "다시 생성"할 필요가 없을 수도 있습니다. – Colas