当前位置 : 主页 > 网页制作 > React >

React Native iOS 8.1应用程序在访问新视图时崩溃 – 仅在不使用调试器时

来源:互联网 收集:自由互联 发布时间:2021-06-15
我有一个在iOS上运行的react-native应用程序.在iOS 9.2上,应用程序运行完全正常,无论是在使用Chrome调试器还是不使用它时.但是,在iOS 8.1中,应用程序将加载,并且可以刷新列表,从服务器加载数
我有一个在iOS上运行的react-native应用程序.在iOS 9.2上,应用程序运行完全正常,无论是在使用Chrome调试器还是不使用它时.但是,在iOS 8.1中,应用程序将加载,并且可以刷新列表,从服务器加载数据等.这在两个操作系统中都经过测试,可在模拟器和物理设备上运行.

当使用Chrome调试器iOS 8.1时,棘手的部分是.按预期工作.当它未与Chrome调试器一起运行时,只要导航到新视图,应用程序就会崩溃.我有一个自定义滑动视图,因此我可以滑动到另一个视图,我可以看到所有内容正确加载到“安定”和崩溃之前.如果我只是尝试点击一个新页面,它几乎会立即崩溃.

我的猜测(从this stackoverflow question开始教育)是,这是一个时间问题,只要我的假设是iOS 8.1运行速度比iOS 9.2更快是正确的.我猜测调试器会减慢应用程序的速度,以至于计时问题本身并不存在.话虽这么说,我在模拟器中尝试了“慢动画”模式,并且在不使用调试器时仍然崩溃.

考虑到这一点,我认识到它很可能是一个配置问题.我正在运行XCode 7.2,并且正在使用react-native 0.21.0-rc.

尝试单击任意位置/更改视图时出现的错误是:

null不是对象(评估’inst.componentWillReceiveProps’)

在发布我们的应用程序时遇到同样的问题 – 它不会出现在模拟器中,只会在发布时出现.

在我们的例子中,事实证明我们在代码段中出现了错误,只有在浏览器获得对js函数的支持时才会出现错误

Date().toLocaleTimeString

Mozilla表示,您可以通过执行以下操作来检查浏览器对此功能的支持:

function toLocaleTimeStringSupportsLocales() {
  try {
    new Date().toLocaleTimeString('i');
  } catch (e) {
    return e​.name === 'RangeError';
  }
  return false;
}

我还没有更新到最新的Xcode,但它在运行iOS 10的iPhone上崩溃.一旦我将Xcode升级到最新版本,错误也开始出现在模拟器中,因为Safari可能获得了对toLocaleTimeString的支持. SIM也是.报告运行调试的错误更具体,并指出我的修复.

我怀疑这是同一个问题,但这就是我在我的应用程序中修复此错误的方式,以及它如何仅在版本中出现而不是sim – 严格因为不同版本的Safari导致不同的执行路径.希望这可以帮助其他人解决这个问题.

网友评论