天天看點

傳不定個數參數的函數寫法

蛋疼,一朋友要這樣寫,是以我也就幫忙研究了下!

- (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);

}