Got “is not a recognized Objective-C method” when bridging Swift to React-Native

This is a part of Swift 3’s changes and can be solved by adding an underscore:

import Foundation

@objc(SwitchManager)
class SwitchManager: NSObject {

  @objc func show(_ name: String) {
    NSLog("%@", name);
  }

}

See Swift 3’s 0046 Proposal: Establish consistent label behavior across all parameters including first labels that is called out in the Swift.org migration guide under “Consistent first argument labels”.

Basically, how Objective-C sees Swift methods has changed with Swift 3.

EDIT: This is still the case in Swift 4, see docs here under Omitting Argument Labels.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)