我试图转换此宏:
#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)
我抱怨有关参数类型的错误,这是有道理的考虑Any?...
实际上意味着函数采用可变长度类型为[Any?]
的参数数组。
有没有办法将宏移植到Swift或者我运气不好?