私は開発にcocos2dを使用しています。カスタマイズされたボタンクラスをラップしようとしました。ボタンに割り当てたセレクターに応答させるために、NSInvocationを使用しました。その中で、MyButtonはこのように機能します。
if( target && sel ) {
sig = [target methodSignatureForSelector:sel];
invocation_ = nil;
invocation_ = [NSInvocation invocationWithMethodSignature:sig];
[invocation_ setTarget:target];
[invocation_ setSelector:sel];
[invocation_ setArgument:&self atIndex:2];
[invocation_ retain];
}
私はselに次のような関数を渡しました:
- (void)onButtonClicked:(id)sender;
[invocation_ setArgument:&self atIndex:2];
私の質問は、MyButtonの実装にこの行を追加する必要があるかどうかです。
私がこの質問をしているのは、ここのiosドキュメントによると: NSInvocationクラスリファレンス
それはそれに対処しました:
インデックス0と1は、それぞれ非表示の引数selfと_cmdを示します。これらの値は、setTarget:メソッドとsetSelector:メソッドを使用して直接設定する必要があります。メッセージで通常渡される引数には、インデックス2以上を使用します。
setTargetを呼び出すときにselfが渡されたようですが、setArgumentメソッドで&self引数を渡す必要がないということですか?
ありがとう