Objective C framework for swift app, error: Argument passed to call that takes no arguments

Objective C framework for swift app, error: Argument passed to call that takes no arguments

我正在为 swift 应用构建 objective C 框架。我正在尝试通过导入的 objective C 头文件使用 swift 中的函数。

interface MyApi : NSObject

+ (void)init:(NSDictionary *)launchOptions;

@end
@implementation MyApi

+ (void)init:(NSDictionary *)launchOptions {
    ...
}
@end

这些是 obj C 中的 .h 和 .m 文件。在 swift 中,我尝试这样调用函数:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        MyApi.init(launchOptions)
        return true
    }

但我不断收到错误消息:传递给不带参数的调用的参数

在我调用函数的那一行。 有什么想法吗?

此语法:

MyApi.init(launchOptions)

调用 MyApi 初始化程序 。注意init是Swift中的一个关键词,有特殊含义!由于 MyApi 继承自 NSObject,它继承了无参数初始化器,这就是 Swift 编译器 认为 您试图调用的。这等同于:

MyApi(launchOptions)

但是,Objective-C 中的 init 方法不是 MyApi 对象的初始化程序,是吗?它只是一个名为 init 的常规 class 方法。要在 Swift 中调用它,您必须通过在其周围添加反引号来转义 init 关键字的特殊含义:

MyApi.`init`(launchOptions)

反引号相当 astonishing,所以我建议您将 init 重命名为其他名称,例如 setup.