React Native(Xcode)中的开发模式与生产模式

时间:2019-09-18 16:08:37

标签: ios xcode react-native

在物理iPhone上进行测试时出现内存错误

当我在物理设备(通过USB电缆连接的iPhone)上运行我的react-native应用程序时,我目前遇到内存问题。我已将其跟踪到太多console.log输出。我遇到了几种不同的解决方案:

1)在此[React-Native页面] [1]上,Facebook建议使用babel-plugin-transform-remove-console插件。将其安装为仅在开发模式下工作,npm i babel-plugin-transform-remove-console --save-dev在.babelrc中具有以下代码:

{
  "env": {
    "production": {
      "plugins": ["transform-remove-console"]
    }
  }
}

注意:我没有.babelrc文件。我只有一个babel.config.js文件。

2)有些人建议使用:

if (!__DEV__) {
  console.log = () => {};
}

如果您不在DEV模式下,我相信这会将console.log的任何实例设置为空对象。

在App Store上被接受的问题

由于出现内存错误,Apple拒绝了我的应用程序的错误。因此,我假设console.log()语句正在使用应用程序进行编译,并且它们也遇到了内存错误。他们没有告诉我内存错误,只是在那个特定时间它不起作用。

DEV模式与生产模式

上面的选项1和2都假定为生产模式与开发模式。但是,当我使用Xcode编译应用程序以上传到App Store时,我如何知道它将处于哪种模式?

当我从Xcode中选择Product> Archive时,会自动将其置于生产模式而不是开发模式吗?

还有一些其他相关问题

在Xcode的“常规”选项卡上,我将“签名”(调试)和“签名”(发布)都设置为相同的“配置文件”。这是执行此操作的典型方法。

在“产品”>“方案”>“编辑方案”>“运行”下,将“构建配置”设置为“调试”。我应该改变这个吗?我尝试将其更改为“发布”,但随后出现“配置设置冲突”错误

2 个答案:

答案 0 :(得分:0)

当您在 Xcode 中归档您的应用程序时,它将处于“PROD”模式(又名发布模式)。在 Xcode 中,您可以在 Xcode 中以 DEV(又名调试模式)和 PROD 运行您的应用程序。这将使您更容易找到这个内存问题的根源。 为此:

1.在顶部栏中选择您正在使用的方案,点击“编辑方案”

enter image description here

2.然后将“构建配置”设置为发布,并取消选中“调试可执行文件”

enter image description here

您可以选择任何模拟器或连接的设备,按下“播放”按钮来运行发布版本,以及随之而来的所有性能优化。

答案 1 :(得分:0)

归档后您拥有的是生产代码。

在我的例子中,我的生产应用在遇到记录 React.createRef() 对象的代码时卡住了。在开发模式下一切正常。

您可以尝试使用 if(__DEV__){...} 来记录任何内容,因为所有这些 console.log 仍在生产中