¿Puedo exponer los valores de parámetros predeterminados de Swift a Objective-C?
Digamos que tengo alguna clase Swift con métodos que me gustaría exponer a Objective-C:
@objc(Worker) class Worker : NSObject {
func performWork(label: String = "Regular Work") {
// Perform work
}
}
Puedo llamar a esto de dos maneras:
Worker().performWork()
Worker().performWork("Swift Development")
Sin embargo, cuando se llama desde Objective-C, no obtengo la versión "predeterminada" de este método.debe suministrar una etiqueta:
[[[Worker alloc] init] performWork:@"Obj-C Development"];
Ver la definición de miAppName-Swift.h
encabezado a continuación:
SWIFT_CLASS_NAMED("Worker")
@interface Worker : NSObject
- (void)performWork:(NSString * __nonnull)label;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end
me gustaríaesperar Para ver un método con esta firma:
- (void)performWork;
Me doy cuenta de que ObjC no admite valores de parámetros predeterminados, pero supongo que los valores predeterminados de Swift simplemente generan funciones Swift adicionales con implementaciones triviales que llaman a la función "real" (es decir, son azúcar sintáctica que oculta elimplementación típica usaríamos en Obj-C).
¿Hay alguna forma de exponer este valor predeterminado a Objective-C? Si no, ¿alguien puede señalarme alguna documentación sobre por qué esto no está disponible?