title: Can I expose Swift default parameter values to Objective-C?
body: <p>Say I have some Swift class with methods I'd like to expose to Objective-C:</p>
  
  <pre><code>@objc(Worker) class Worker : NSObject {
      func performWork(label: String = "Regular Work") {
          // Perform work
      }
  }
  </code></pre>
  
  <p>I can call this in two ways:</p>
  
  <pre><code>Worker().performWork()
  Worker().performWork("Swift Development")
  </code></pre>
  
  <p>However, when called from Objective-C, I do not get the "default" version of this method - I <em>must</em> supply a label:</p>
  
  <pre><code>[[[Worker alloc] init] performWork:@"Obj-C Development"];
  </code></pre>
  
  <p>See the definition from my <code>AppName-Swift.h</code> header below:</p>
  
  <pre><code>SWIFT_CLASS_NAMED("Worker")
  @interface Worker : NSObject
  - (void)performWork:(NSString * __nonnull)label;
  - (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
  @end
  </code></pre>
  
  <p>I would <em>expect</em> to see a method with this signature:</p>
  
  <pre><code>- (void)performWork;
  </code></pre>
  
  <p>I realise ObjC doesn't support default parameter values, but my assumption was that the Swift default values simply generate additional Swift functions with trivial implementations calling the "real" function (i.e. they're syntactic sugar hiding the <a href="https://stackoverflow.com/a/561207/1217087">typical implementation</a> we'd use in Obj-C).</p>
  
  <p>Is there any way to expose this default value to Objective-C? If not, can anyone point me to any documentation on why this isn't available?</p>