假设我有一些 Swift 类,其中包含我想公开给 Objective-C 的方法:
@objc(Worker) class Worker : NSObject {
func performWork(label: String = "Regular Work") {
// Perform work
}
}
我可以用两种方式调用它:
Worker().performWork()
Worker().performWork("Swift Development")
但是,当从 Objective-C 调用时,我没有得到此方法的“默认”版本 - 我必须提供一个标签:
[[[Worker alloc] init] performWork:@"Obj-C Development"];
请参阅下面我的 AppName-Swift.h
header 中的定义:
SWIFT_CLASS_NAMED("Worker")
@interface Worker : NSObject
- (void)performWork:(NSString * __nonnull)label;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end
我期待看到一个带有这个签名的方法:
- (void)performWork;
我意识到 ObjC 不支持默认参数值,但我的假设是 Swift 默认值只是生成额外的 Swift 函数,这些函数具有调用“真实”函数的简单实现(即它们是隐藏我们的 typical implementation 的语法糖)将在 Obj-C 中使用)。
有什么方法可以将这个默认值暴露给 Objective-C 吗?如果没有,任何人都可以向我指出有关为什么这不可用的任何文档吗?
最佳答案
关于objective-c - 我可以将 Swift 默认参数值公开给 Objective-C 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35185182/