React Native 0.68 AppDelegate.mm报NfcManager未声明标识符错误
React Native 0.68 AppDelegate.mm中调用NfcManager报未声明标识符错误
问题表现
开发React Native 0.68版本应用时,在Objective-C++格式的AppDelegate.mm文件内调用react-native-nfc-manager依赖提供的NfcManager模块,编译时抛出错误:Use of undeclared identifier "NfcManager"
背景信息
- 同一套业务逻辑在React Native 0.64版本的Objective-C格式
AppDelegate.m文件中可正常编译运行 - 因不熟悉C/C++语法,曾尝试将
NfcManager.m重命名为.mm后缀,问题未得到解决
关联代码片段
// AppDelegate.mm - (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler { [NfcManager application:application continueUserActivity:userActivity restorationHandler:restorationHandler]; // 报错触发位置 // 其余业务逻辑 } // NfcManager.h @interface NfcManager : RCTEventEmitter <RCTBridgeModule> { ... } // NfcManager.m @implementation NfcManager { ... }
解决方法
React Native 0.68版本的头文件引入逻辑和0.64及更早版本存在差异:旧版本直接在AppDelegate.m中引入NfcManager.h即可正常调用类方法,0.68版本需要将NfcManager.h的导入语句写在AppDelegate.h文件中,而非AppDelegate.mm文件内,修改后即可消除该编译报错,无需调整NfcManager相关文件的后缀名。
内容的提问来源于stack exchange,提问作者Tulerau
相关产品推荐
相关产品推荐

