objective-c - 如何在 Objective-C 中声明带有可变参数的 block 函数?

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

如何在 Objective-C 中声明带有可变参数的 block 函数?

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

};

最佳答案

您有两个问题:

  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;
};

关于objective-c - 如何在 Objective-C 中声明带有可变参数的 block 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55618589/

相关文章:

objective-c - 以编程方式更改导航栏标题

iOS 7 区域监控不可靠

ios - EXC_BAD_ACCESS 和泄漏可能是由于在 block 内捕获 block

ios - 当 block 从 swift 转移到 Objective-C 时出现内存问题

c++ - 用于检查值是否是其参数的辅助函数

objective-c - 设置 uinavigationitem 的后退按钮不起作用

ios - Objective-C - 接收器类型 'NSInteger'(又名 'long')不是 Objective-C 类 & 接收器类型 'NSDecimal' 不是 Objective-C 类

objective-c - 开始工作表 : block alternative with ARC?

c - 是否可以使用 Inline ASM 计算 __cdecl 中的函数(变量)参数?

Scala 可变参数函数和 Seq