3

このような可変引数を取るメソッドがあり、引数は nil で終わります。

-(void)manyParams:(NSString *)st, ... {
    va_list argList;
    va_start(argList,st);

    id obj;

    while ((obj = va_arg(argList, id))) {
        NSLog(@"%@",obj);
    }
    va_end(argList);

    return;
}

このように直接呼び出すことができます

[self manyParams:@"one",@"two",@"three",nil];

クラスを使用しNSInvocationて manyParams を呼び出す場合、どうすればこれを行うことができますか

NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
[invocation setTarget:self];
[invocation setSelector:@selector(manyParams:)];
///NSString *one = @"one";
///[invocation setArgument:&one atIndex:2]; //////How to pass variable arguments like @"one",@"two",@"three", nil
[invocation invoke];
4

1 に答える 1