NSResponder

Panther·2021년 8월 8일
0
post-custom-banner

https://developer.apple.com/documentation/appkit/nsresponder

"An abstract class that forms the basis of event and command processing in AppKit."

AppKit에서의 이벤트 기반 및 명령 프로세싱을 형성하는 추상 클래스입니다.

Declaration

@MainActor class NSResponder : NSObject

Overview

코어 클래스(NSApplication, NSWindow, NSView)는 이벤트를 처리하는 모든 클래스처럼 NSResponder로부터 상속됩니다. 리스폰더 모델은 이벤트 메시지, 액션 메시지, 리스폰더 체인 세 가지 요소를 사용합니다.

NSResponder는 오류 정보의 표시에서도 중요한 역할을 합니다. presentError(_:), presentError(_:modalFor:delegate:didPresent:contextInfo:) 메소드의 기본값 구현은 스스로에게 willPresentError(_:)를 보냄으로써, 서브클래스에게 에러 경고를 나타내는 로컬 정보를 커스터마이징 할 수 있는 기회를 줍니다. 이후 NSResponder는 다음 리스폰더에게 메시지를 전달하며, 이는 커스터마이징 된 NSError 객체를 전달하면서 동작합니다. 수정된 리스폰더 체인에 대한 정확한 경로는 애플리케이션 윈도우의 타입에 의존합니다.

  • 문서를 갖는 윈도우는 view > superviews > window > window controller > document object > document controller > the application object 순입니다.
  • 윈도우 컨트롤러를 갖고 있지만 문서는 없는 윈도우는 view > superviews > window > window controller > the application object 순입니다.
  • 윈도우 컨트롤러를 갖지 않는 윈도우는 view > superviews > window > the application object 순입니다.

NSApplication는 문서 모달 에러 경고를 표시하며, 만약 에러 객체가 복구 시도를 갖고 있는 경우 에러로부터 복구할 수 있는 기회를 줍니다. 복구 시도는 NSErrorRecoveryAttempting 비공식 프로토콜을 따르는 객체입니다.

Note
macOS 10.15 및 이후에서 NSResponder와 그 자식들은 메인 스레드에서 dealloc 메소드를 호출합니다. 이 메소드는 비동기 블록이 백그라운드 큐에서 예상치 못한 해제를 하는 상황을 피할 수 있도록 해줍니다.

Topics


Responding to Action Messages

Action Messeages

일반적인 작업을 처리하기 위해 첫 번째 리스폰더에서 액션 메시지를 구현합니다.

https://developer.apple.com/documentation/appkit/nsresponder/action_messages
https://velog.io/@panther222128/Action-Messages


post-custom-banner

0개의 댓글