我用ObjectiveC创建了两个函数,如:
- (void)showName:(NSString *)name, ...;
- (void)showTitle:(NSString *)title;
我可以调用showTitle:在我的swift代码中,但是如果调用showName则无法编译:
这是我的代码:
//Objective_C code:
@interface DemoObject : NSObject
- (void)showName:(NSString *)name, ...;
- (void)showTitle:(NSString *)title;
@end
@implementation DemoObject
- (void)showName:(NSString *)name, ... {
NSLog(@"name=%@", name);
}
- (void)showTitle:(NSString *)title {
[self showName:title, @""];
}
@end
//Swift Code:
var obj = DemoObject()
obj.showTitle("");
obj.showName(""); //compile error here
如何解决此问题。因为我使用第三个库,它包含变量参数函数。
答案 0 :(得分:3)
Swift不会使用varargs导入C函数或Objective-C方法。
任何具有varargs函数的优秀API也有一个替代形式的函数,它采用va_list
(例如printf
具有vprintf
);或者它通过逐个添加参数来实现同样的事情。