我可以向Objective-C公开Swift默认参数值吗?

我可以向Objective-C公开Swift默认参数值吗?,objective-c,swift,Objective C,Swift,假设我有一些Swift类,其中包含我想向Objective-C展示的方法: @objc(Worker) class Worker : NSObject { func performWork(label: String = "Regular Work") { // Perform work } } 我可以用两种方式称之为: Worker().performWork() Worker().performWork("Swift Development") 但是,当从

假设我有一些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
标题中的定义:

SWIFT_CLASS_NAMED("Worker")
@interface Worker : NSObject
- (void)performWork:(NSString * __nonnull)label;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end
我希望看到具有此签名的方法:

- (void)performWork;
我意识到ObjC不支持默认参数值,但我的假设是,Swift默认值只是生成额外的Swift函数,而琐碎的实现调用“实”函数(即,它们隐藏了我们将在Obj-C中使用的语法糖)


有没有办法将此默认值公开给Objective-C?如果没有,有人能告诉我为什么没有相关文档吗?

答案是没有,目前没有办法公开

但是,Swift 3.0正在考虑使用它(见提案)


编辑:正如Adam S.所指出的,这是不正确的。

答案是否定的,目前没有办法公开这一点

但是,Swift 3.0正在考虑使用它(见提案)


编辑:正如Adam S.所指出的,这是不正确的。

我怀疑你能找到比“苹果太忙了,没时间去做”更好的理由。在去年的WWDC上,所有的会谈都是关于Swift的。ObjC只有两个新特性:可空性标记和通用性。我怀疑你能找到比“苹果太忙了,没时间去做”更好的理由。在去年的WWDC上,所有的会谈都是关于Swift的。ObjC只有两个新特性:可空性标记和泛型根据我在该提案中读到的内容,它正在考虑在公开Obj-C API时使用Swift默认参数,允许您跳过从Swift调用Obj-C API时容易默认的内容。这是伟大的,但我正在寻找另一个方向-除非我误读或忽略了那里的东西。它描述了您可以对Swift代码进行的更改,以利用该潜在功能。@AdamS您说得很对。我浏览了邮件列表中的标题并做出了假设(我应该考虑到该提案的标题),那么。。。这仍然不可能吗?从我在该提案中读到的内容来看,它正在考虑在公开Obj-C API时使用Swift默认参数,允许您跳过从Swift调用Obj-C API时容易默认的内容。这是伟大的,但我正在寻找另一个方向-除非我误读或忽略了那里的东西。它描述了您可以对Swift代码进行的更改,以利用该潜在功能。@AdamS您说得很对。我浏览了邮件列表中的标题并做出了假设(我应该考虑到该提案的标题),那么。。。这还不可能吗?