gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 12:14:23 24 4
gpt4 key购买 nike

假设我有一些 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 公开这个默认值吗?如果没有,任何人都可以向我指出任何有关为什么不可用的文档吗?

最佳答案

答案是否定的,目前还没有办法揭露这一点。

但是,Swift 3.0 正在考虑使用它(请参阅提案 here)

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

关于objective-c - 我可以向 Objective-C 公开 Swift 默认参数值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45604909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com