使用varargs到Swift的端口Objective-C宏

时间:2016-07-27 18:05:49

标签: 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()) {
        block(args)
    }
    return
}

但当我尝试这样调用该函数时:

let block: (Int, Int) -> () = { first, second in print(first + second) }
returnAsync(block, 2, 5)

我抱怨有关参数类型的错误,这是有道理的考虑Any?...实际上意味着函数采用可变长度类型为[Any?]的参数数组。

有没有办法将宏移植到Swift或者我运气不好?

0 个答案:

没有答案