Skip to main content
 首页 » 操作系统

ios之Swift 找不到带有可变参数的 objc 函数

2024年01月01日43telwanggs

我用 ObjectiveC 创建了两个函数,例如:

- (void)showName:(NSString *)name, ...; 
- (void)showTitle:(NSString *)title; 

我可以在我的 swift 代码中调用 showTitle:,但如果调用 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 

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

请您参考如下方法:

Swift 不导入带有可变参数的 C 函数或 Objective-C 方法。

任何具有可变参数函数的良好 API 也具有采用 va_list 的函数的替代形式(例如 printf 具有 vprintf);或者它有一个简单的方法来通过一个一个地添加参数来实现同样的事情。