Skip to content

Instantly share code, notes, and snippets.

@ruandao
Created August 2, 2014 14:26
Show Gist options
  • Select an option

  • Save ruandao/65198fb651f28bd6bf84 to your computer and use it in GitHub Desktop.

Select an option

Save ruandao/65198fb651f28bd6bf84 to your computer and use it in GitHub Desktop.
ios 动态参数例子
+ (NSString *)downloadUrlWithUserEmail:(NSString *)email, ... {
NSMutableArray *argsArr = [@[] mutableCopy];
va_list params;
va_start(params, email);
id arg;
if (email) {
//将第一个参数添加到array
id prev = email;
[argsArr addObject:prev];
//va_arg 指向下一个参数地址
//这里问题的所在,网上的例子,没有保存第一个参数地址,后面循环,指针将不会再指向第一个参数
while ( (arg = va_arg(params, id) ) ) {
if (arg) {
[argsArr addObject:arg];
}
}
// 置空
va_end(params);
}
switch ([argsArr count]) {
case 2:
{
return [self arenaUrlWithUserEmail:argsArr[0] withArenaIndex:argsArr[1]];
break;
}
case 3: {
return [self mapUrlWithUserEmail:argsArr[0] withArenaIndex:argsArr[1] withMapIndex:argsArr[2]];
break;
}
case 4: {
return [self markUrlWithUserEmail:argsArr[0] withArenaIndex:argsArr[1] withMapIndex:argsArr[2] withMarkIndex:argsArr[3]];
break;
}
default:
break;
}
return nil;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment