転送の例
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/02 08:13 UTC 版)
「Objective-C」の記事における「転送の例」の解説
Appleのランタイムでは、セレクタに対応する引数情報と転送処理の二つの過程を経て行われる。 // NSMethodSignatureはメソッドの引数の数や型情報を表すオブジェクト// Objective-Cのメソッドはスカラー型をとるC関数互換なので正確なスタック情報が必要となる- (NSMethodSignature*)methodSignatureForSelector:(SEL)sel{ id signature = [otherObj methodSignatureForSelector: sel]; return signature;}// NSInvocationはターゲットと引数を持ち、返値を受け取るオブジェクト// 元のターゲットの代わりに別のターゲットで実行を行なうとあたかもそのオブジェクトにメッセージが送られたかのように動作する- (void)forwardInvocation:(NSInvocation*)invocation{ SEL aSel = [invocation selector]; if([otherObj respondsToSelector: aSel]) { [invocation invokeWithTarget: otherObj]; } else { [self doesNotRecognizeSelector: aSel]; }}
※この「転送の例」の解説は、「Objective-C」の解説の一部です。
「転送の例」を含む「Objective-C」の記事については、「Objective-C」の概要を参照ください。
- 転送の例のページへのリンク