Могу ли я выставить значения параметров Swift по умолчанию для Objective-C?
Скажем, у меня есть некоторый класс 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? Если нет, может кто-нибудь указать мне какую-либо документацию о том, почему это не доступно?