https://developer.apple.com/documentation/appkit/nsresponder
"An abstract class that forms the basis of event and command processing in AppKit."
AppKit
에서의 이벤트 기반 및 명령 프로세싱을 형성하는 추상 클래스입니다.
@MainActor class NSResponder : NSObject
코어 클래스(NSApplication
, NSWindow
, NSView
)는 이벤트를 처리하는 모든 클래스처럼 NSResponder
로부터 상속됩니다. 리스폰더 모델은 이벤트 메시지, 액션 메시지, 리스폰더 체인 세 가지 요소를 사용합니다.
NSResponder
는 오류 정보의 표시에서도 중요한 역할을 합니다. presentError(_:)
, presentError(_:modalFor:delegate:didPresent:contextInfo:)
메소드의 기본값 구현은 스스로에게 willPresentError(_:)
를 보냄으로써, 서브클래스에게 에러 경고를 나타내는 로컬 정보를 커스터마이징 할 수 있는 기회를 줍니다. 이후 NSResponder
는 다음 리스폰더에게 메시지를 전달하며, 이는 커스터마이징 된 NSError
객체를 전달하면서 동작합니다. 수정된 리스폰더 체인에 대한 정확한 경로는 애플리케이션 윈도우의 타입에 의존합니다.
NSApplication
는 문서 모달 에러 경고를 표시하며, 만약 에러 객체가 복구 시도를 갖고 있는 경우 에러로부터 복구할 수 있는 기회를 줍니다. 복구 시도는 NSErrorRecoveryAttempting
비공식 프로토콜을 따르는 객체입니다.
Note
macOS 10.15 및 이후에서NSResponder
와 그 자식들은 메인 스레드에서 dealloc 메소드를 호출합니다. 이 메소드는 비동기 블록이 백그라운드 큐에서 예상치 못한 해제를 하는 상황을 피할 수 있도록 해줍니다.
일반적인 작업을 처리하기 위해 첫 번째 리스폰더에서 액션 메시지를 구현합니다.
https://developer.apple.com/documentation/appkit/nsresponder/action_messages
https://velog.io/@panther222128/Action-Messages