Ada*_*m S 10 objective-c swift
假设我有一些Swift类,其中包含我想要暴露给Objective-C的方法:
@objc(Worker) class Worker : NSObject {
func performWork(label: String = "Regular Work") {
// Perform work
}
}
Run Code Online (Sandbox Code Playgroud)
我可以用两种方式来称呼它:
Worker().performWork()
Worker().performWork("Swift Development")
Run Code Online (Sandbox Code Playgroud)
但是,当从Objective-C调用时,我没有得到此方法的"默认"版本 - 我必须提供一个标签:
[[[Worker alloc] init] performWork:@"Obj-C Development"];
Run Code Online (Sandbox Code Playgroud)
请参阅AppName-Swift.h下面的标题中的定义:
SWIFT_CLASS_NAMED("Worker")
@interface Worker : NSObject
- (void)performWork:(NSString * __nonnull)label;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end
Run Code Online (Sandbox Code Playgroud)
我希望看到一个带有此签名的方法:
- (void)performWork;
Run Code Online (Sandbox Code Playgroud)
我意识到ObjC不支持默认参数值,但我的假设是Swift默认值只是生成额外的Swift函数,而简单的实现调用"真实"函数(即它们是语法糖,隐藏了我们用于的典型实现) OBJ-C).
有没有办法将此默认值公开给Objective-C?如果没有,任何人都可以向我指出任何文件,说明为什么这不可用?
| 归档时间: |
|
| 查看次数: |
5792 次 |
| 最近记录: |