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
.
我正在为 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
.