运行 在 UIView 上添加反应本机视图时反应本机代码抛出异常

React native code throw exception while running react native view added on UIView

我能够 运行 我的旧 iOS 代码(在 iOS 12 XCode 10.1 中正常工作)在 XCode 13.2.1 和 iOS 15.2。在我的代码中,有一个模块是用 React Native 开发的。我在 UiView 代码上添加为子视图的 React Native 模块如下,

if(reactView){
    [reactView removeFromSuperview];
    reactView = nil;
}

NSURL *jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"prodmain" withExtension:@"jsbundle"];

NSDictionary *props = @{@"DashboardType" : @"PIAdmin"};
reactView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation moduleName:@"PIAdminApp" initialProperties:props launchOptions:nil];
reactView.frame = CGRectMake(piDashboardView.frame.origin.x, 0, piDashboardView.frame.size.width, piDashboardView.frame.size.height);
reactView.backgroundColor = [UIColor whiteColor];
[piDashboardView addSubview:reactView];

以上代码在 XCode 10.1 到版本 iOS 12 中正常工作,但是当我 运行 它在 iOS 15 和 XCode 13.2.1 上时,我从下面的屏幕截图中得到了例外,

我一直在编译旧代码,但我在 XCode 中更改了一些构建设置,因此它可以正常工作,link 如下所示,

我对以上变化表示怀疑属性。如果撤消更改,那么我将面临相同的编译时错误。所以现在我完全糊涂了。

我从 github react-native 社区得到了答案,参考 link here

我更新后的代码如下,

static BOOL RCTParseUnused(const char **input)
{
    return  RCTReadString(input, "__attribute__((unused))") ||
            RCTReadString(input, "__attribute__((__unused__))") ||
            RCTReadString(input, "__unused") ||
            RCTReadString(input, "__attribute__((unused))");
           
}

我在 OR 条件下保留旧代码和建议代码。