objective-c - 将 Swift 桥接到 React-Native 时得到 "is not a recognized Objective-C method"

标签 objective-c swift reactjs react-native

我正在尝试将我的 React-Native 0.33 代码桥接到一个 super 简单的 Swift 方法,遵循 this guide但我得到的只是show:(NSString *)name is not a recognized Objective-C method

这是我的代码:

开关管理器.swift

import Foundation

@objc(SwitchManager)
class SwitchManager: NSObject {

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

}

SwitchManagerBridge.h

#import "RCTBridgeModule.h"

@interface RCT_EXTERN_MODULE(SwitchManager, NSObject)

RCT_EXTERN_METHOD(show:(NSString *)name)

@end

SwitchManager-Bridging-Header.h

#import "RCTBridgeModule.h"

然后在我的 index.ios.js 文件中,我使用 import { SwitchManager } from 'NativeModules'; 导入 SwitchManager 并调用 SwitchManager.show( '一个');。这就是错误发生的地方。

不确定哪里出了问题。

最佳答案

这是Swift 3的一部分改动,可以通过加下划线解决:

import Foundation

@objc(SwitchManager)
class SwitchManager: NSObject {

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

}

参见 Swift 3 的 0046 Proposal: Establish consistent label behavior across all parameters including first labelsSwift.org migration guide 中被调用在“一致的第一个参数标签”下。

基本上,Objective-C 看待 Swift 方法的方式在 Swift 3 中发生了变化。

编辑:在 Swift 4 中仍然如此,see docs here under Omitting Argument Labels .

关于objective-c - 将 Swift 桥接到 React-Native 时得到 "is not a recognized Objective-C method",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39692230/

相关文章:

json - 动态生成表格 View 单元格和标题

ios - 在构建时将 key 添加到 plist

ios - 如何判断 UIImage 是彩色还是单色?

ios - 在大型 UIView 上绘制占用大量内存

ios - 如何在动画结束时实例化 viewController?

javascript - Gatsby 中的类型错误 : Cannot read property 'data' of undefined . ...src/pages/index.js

javascript - Webpack:了解 block 和代码拆分

reactjs - Semantic UI React - 用远程内容填充下拉列表

objective-c - 将 NSNumber 转换为 NSDecimalNumber

ios - UILabel 动画淡入淡出不起作用