Got "is not a recognized Objective-C method" when bridging Swift to React-Native Got "is not a recognized Objective-C method" when bridging Swift to React-Native reactjs reactjs

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.


this worked for me in xcode 8.0 and swift 3

@objc func openPresentedViewController(_ name: String,name1: String,name2: String){}

add _ to non labelled members

RCT_EXTERN_METHOD(methodName:(NSString *)name name1:(NSString *)name1 name2:(NSString *)name2)

as you can see in the objective c method name is nonlabeled parameter add _ to it in the swift method


I was fighting with this issue all day. Resolved by setting the Swift Compiler to use Legacy versions (XCode 8 is prefers Swift 3), so in:

Build Settings > Scroll down to 'Use Legacy Swift Language Version' set as Yes.