Objective-C ランタイム ライブラリだけを見ると、応答しないオブジェクトにメッセージが送信された場合、ランタイム システムは受信者にメッセージを処理する別の機会を与えます。したがって、レシーバーのforward::
メソッドが実装されている場合は、呼び出されます。ただし、NSObject.mmを見ると、NSObject
実装されていないようですforward::
。
では、転送が必要なときにランタイム システムが呼び出すのは だけなので、NSObject
のメソッドはどのように呼び出されるのでしょうか。Foundation は( runtime.h ) を使用して、オブジェクトに送信されたメッセージを転送する必要があるたびに呼び出す新しいハンドラーを設定しますか?forwardInvocation:
forward::
objc_setForwardHandler
forwardInvocation:
NSObject