undefined

一、变参函数

实现可变参数需要借助标准 C 中的一些技术

  • va_list 指向参数列表的指针
  • va_start 初始化 va_list 并使其指向指定参数之后的参数位置
  • va_arg 从参数列表中获取下一个参数(获取时需指定参数类型,这样底层才能正确计算出内存范围)
  • va_end 释放参数列表所占内存

1. 实现

1
2
3
4
5
6
7
8
9
10
11
12
13
+ (NSString*)setContentByAppendingStrings:(NSString*)message, ... {
NSMutableString* newContentString = [NSMutableString string];
va_list args;
va_start(args, message);
for (NSString* arg = message; arg != nil; arg = va_arg(args, NSString*)) {
NSLog(@"%@", arg);
[newContentString appendString:arg];
}
va_end(args);
return newContentString;
}

NSString* res = [VariableParamFunc setContentByAppendingStrings:@"hello", @"world", nil];

二、方法默认参数