如何在Objective-C中使用可变参数声明一个块函数?

时间:2019-04-10 17:50:20

标签: objective-c objective-c-blocks variadic-functions

如何在Objective-C中用可变参数声明一个块函数?

NSString *(^fn)(va_list) = ^(...) {  // ?

};

1 个答案:

答案 0 :(得分:3)

您有两个问题:

  1. va_list参数与...参数不同。
  2. 可变参数C函数必须至少具有一个命名参数。

下面是一个编译示例:

NSString *(^fn)(NSString *format, ...) = ^NSString *(NSString *format, ...){
    va_list ap;
    va_start(ap, format);
    NSString *answer = [[NSString alloc] initWithFormat:format arguments:ap];
    va_end(ap);
    return answer;
};