在物理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的“常规”选项卡上,我将“签名”(调试)和“签名”(发布)都设置为相同的“配置文件”。这是执行此操作的典型方法。
在“产品”>“方案”>“编辑方案”>“运行”下,将“构建配置”设置为“调试”。我应该改变这个吗?我尝试将其更改为“发布”,但随后出现“配置设置冲突”错误
答案 0 :(得分:0)
当您在 Xcode 中归档您的应用程序时,它将处于“PROD”模式(又名发布模式)。在 Xcode 中,您可以在 Xcode 中以 DEV(又名调试模式)和 PROD 运行您的应用程序。这将使您更容易找到这个内存问题的根源。 为此:
1.在顶部栏中选择您正在使用的方案,点击“编辑方案”
2.然后将“构建配置”设置为发布,并取消选中“调试可执行文件”
您可以选择任何模拟器或连接的设备,按下“播放”按钮来运行发布版本,以及随之而来的所有性能优化。
答案 1 :(得分:0)
归档后您拥有的是生产代码。
在我的例子中,我的生产应用在遇到记录 React.createRef()
对象的代码时卡住了。在开发模式下一切正常。
您可以尝试使用 if(__DEV__){...}
来记录任何内容,因为所有这些 console.log
仍在生产中