使用varargs将Objective-C宏移植到Swift
我正在尝试转换此宏:使用varargs将Objective-C宏移植到Swift,objective-c,swift,Objective C,Swift,我正在尝试转换此宏: #define returnAsync(block, ...) if (block) { dispatch_async(dispatch_get_main_queue(), ^{ block(__VA_ARGS__); }); } return; 我的结局是: func returnAsync(block: (Any?...) -> (), args: Any?...) { dispatch_async(dispatch_get_main_queue())
#define returnAsync(block, ...) if (block) { dispatch_async(dispatch_get_main_queue(), ^{ block(__VA_ARGS__); }); } return;
我的结局是:
func returnAsync(block: (Any?...) -> (), args: Any?...) {
dispatch_async(dispatch_get_main_queue()) {
block(args)
}
return
}
但当我尝试这样调用该函数时:
let block: (Int, Int) -> () = { first, second in print(first + second) }
returnAsync(block, 2, 5)
我抱怨参数类型有意义,考虑<代码>…………/>代码实际上意味着一个函数采用一组数组的变量:<代码> > [任意?] /代码>可变长度。< /P>
有没有办法将宏移植到Swift或我运气不佳?相关:也相关:这是一个有人试图巧妙使用宏的例子。不用宏就可以了。@gnasher729我在问这个方法签名是什么样子的。