私は Objective-C の機能を使用しており、メソッドが受け取った引数のタイプforwardInvocation:
を知る必要があります。私の例では、私はそれを渡していますが、代わりにそれを教えてくれます。簡単な例を次に示します。int
getArgumentTypeAtIndex:
id
@interface Do : NSObject
+ (void) stuff:(int)x;
@end
@implementation Do
+ (NSMethodSignature *) methodSignatureForSelector:(SEL)selector
{
NSMethodSignature* signature = [super methodSignatureForSelector:selector];
if (!signature)
signature = [self methodSignatureForSelector:@selector(forwardInvocation:)];
return signature;
}
+ (void)forwardInvocation:(NSInvocation *)i
{
const char* argType = [i.methodSignature getArgumentTypeAtIndex:2];
NSLog(@"%s == %s", argType, @encode(id)); // @ == @
NSLog(@"%s == %s", argType, @encode(int)); // @ == i
}
@end
これが私がそれを呼び出す方法です:
[Do stuff:123];
タイプとしてではid
なく、なぜ私が得られないのか考えていますか?int