最近在做swift项目集成react-native 通讯模块
但是遇到一个系统崩溃死活找不到原因
系统总是抛出异常说找不到方法 "method is not ...."
网上总是千篇一律的在桥接文件引入头文件->建立一个私有.m文件用RCT_EXTERN_METHOD宏告诉js方法名-> 在swift 文件前面用@objc 加你实现的方法写出方法实现
可是我按照这么写系统还是找不到我的方法实现
折腾了半天,才发现新版的swift简直是愚蠢之极,需要在@objc中标注oc的方法名才能找到swift的方法实现,具体上代码
//BridgeModuler.m
#import <Foundation/Foundation.h>
#import <React/RCTBridgeModule>
@interface RCT_EXTERN_MODULE(BridgeManager, NSObject)
RCT_EXTERN_METHOD(getToken:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(logout)
RCT_EXTERN_METHOD(getConfig:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
@end
//BridgeManager.swift
@objc(BridgeManager)
class BridgeManager: NSObject {
@objc(getToken:reject:) func getToken(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) -> Void {
}
@objc(getConfig:reject:) func getConfig(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) -> Void {
}
@objc(logout) public func logout() {
}
网友评论