不定個数パラメータの関数書き方

1715 ワード

卵が痛くて、友达がこのように书くので、私も研究を手伝いました!
- (void)testArguments:(NSString *)argument,...
{
    NSMutableArray *array = [NSMutableArrayarray];
    DLog(@"arguments: %@",argument);
    
    va_list  list;
    va_start(list, argument);
    NSString *string = argument;
    while(string){
if(![string isKindOfClass:[NSStringclass]){//ループから飛び出すため
            break;
        }
        CFArrayAppendValue((CFMutableArrayRef)array, string);//配列にパラメータを入れる
        string = va_arg(list, NSString*);//次のパラメータを取得
    }
    va_end(list);
    for(id obj in array){
Dlog(@「印刷:%@」,obj);
    }
}
[selftestArguments:@「いいね」@「いいね」@「hello」@「good」,nil];
または//[ViewController writeWithFormat:@"1", @"2", @"3", nil]; + ( void )__methodName__:(NSObject*)string, ... { // parms must be end with nil      va_list args;      va_start(args, string);      if (string) {          NSLog( @"Do something with First: %@" , string);          NSObject *other;          while ((other = va_arg(args, NSObject *))) {              NSLog( @"Do something with other: %@" , other);          }      }      va_end(args); }