Kann ich Swift-Standardparameterwerte für Objective-C verfügbar machen?

Sag, ich habe eine Swift-Klasse mit Methoden, die ich Objective-C aussetzen möchte:

@objc(Worker) class Worker : NSObject {
    func performWork(label: String = "Regular Work") {
        // Perform work
    }
}

Ich kann dies auf zwei Arten aufrufen:

Worker().performWork()
Worker().performWork("Swift Development")

Wenn ich jedoch von Objective-C aus aufrufe, erhalte ich nicht die "Standard" -Version dieser Methode - IMus ein Etikett bereitstellen:

[[[Worker alloc] init] performWork:@"Obj-C Development"];

Siehe die Definition aus meinemAppName-Swift.h Header unten:

SWIFT_CLASS_NAMED("Worker")
@interface Worker : NSObject
- (void)performWork:(NSString * __nonnull)label;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

Ich würdeerwarten vo um eine Methode mit dieser Signatur zu sehen:

- (void)performWork;

Mir ist klar, dass ObjC keine Standardparameterwerte unterstützt, aber meine Annahme war, dass die Swift-Standardwerte einfach zusätzliche Swift-Funktionen mit trivialen Implementierungen generieren, die die "echte" Funktion aufrufen (d. H. Sie sind syntaktischer Zucker, der das @ verbirgttypische Implementierung Wir würden in Obj-C) verwenden.

Gibt es eine Möglichkeit, diesen Standardwert für Objective-C verfügbar zu machen? Wenn nicht, kann mir jemand Aufschluss darüber geben, warum dies nicht möglich ist?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage