【问题标题】:Swift can't find objc function that with Variable parametersSwift 找不到带有可变参数的 objc 函数
【发布时间】:2014-09-23 07:46:16
【问题描述】:

我用 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 代码。
  • @nestedloop 我已经详细添加了代码。你能帮忙解决吗?我认为这是一个快速的错误。

标签: ios variables parameters swift


【解决方案1】:

Swift 不会使用可变参数导入 C 函数或 Objective-C 方法。

任何具有 varargs 函数的好的 API 还具有采用 va_list 的函数的替代形式(例如,printf 具有 vprintf);否则它有一种简单的方法可以通过逐个添加参数来实现相同的目标。

【讨论】:

  • 我 +'ed 这个,我可以确认它看起来像 Swift 确实不支持这个。自动完成甚至没有显示正确的函数签名,如果您尝试手动添加额外的参数,那么应用程序甚至不会编译。
猜你喜欢
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 2012-05-03
  • 1970-01-01
  • 2020-05-14
  • 1970-01-01
  • 2016-07-18
相关资源
最近更新 更多