Objective-C阻止可变参数不匹配定义

时间:2013-02-06 02:18:19

标签: objective-c objective-c-blocks

为什么编译器允许下面的行没有错误或警告?它似乎应该抱怨“onSuccess”声明和定义中的参数不匹配。

我正在使用Xcode 4.6(LLVM 4.2)

void (^onSuccess)() = ^(AFHTTPRequestOperation *operation, id responseObject) {
};

1 个答案:

答案 0 :(得分:2)

这似乎与C函数声明一样。引用C99标准:

  

(6.7.5.3/14)[...]函数声明符中的空列表不是该函数定义的一部分,它指定不提供有关参数数量或类型的信息。[.. ]

意思是,您可以声明一个函数(因为它似乎也是一个块)并且不提供有关参数的任何信息。