2014-09-23 57 views
1

我创建了两个函数的ObjectiveC,如:斯威夫特无法找到objc功能与参数变量

- (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 

如何来解决这个问题。因为我使用了第三个库,它包含Variable参数函数。

+0

你需要发布更多的代码,比如函数的body和swift代码。 – nestedloop 2014-09-23 07:54:59

+0

@nestedloop我已经添加了详细的代码。你能帮助解决它吗?我认为这是一个快速的错误。 – 2014-09-23 08:51:47

+0

可能的重复http://stackoverflow.com/questions/24195796/how-do-you-call-an-objective-c-variadic-method-from-swift? – mash 2014-10-03 05:23:21

回答

3

Swift不会用可变参数引入C函数或Objective-C方法。任何具有可变参数函数的良好API也具有函数的替代形式,其需要va_list(例如,printf具有vprintf);否则它可以通过逐个添加参数来实现同样的事情。

+0

我+'编辑了这个,我可以确认它看起来像Swift确实不支持这一点。自动完成甚至不显示正确的功能签名,如果你尝试手动添加额外的参数,那么应用程序甚至不会编译。 – asiby 2015-04-09 14:18:42