React本机iOS 8.1应用程序在访问新视图时崩溃-仅当不使用调试器时

React本机iOS 8.1应用程序在访问新视图时崩溃-仅当不使用调试器时,ios,debugging,react-native,ios8.1,ios9.2,Ios,Debugging,React Native,Ios8.1,Ios9.2,我有一个在iOS上运行的react本机应用程序。在iOS 9.2上,无论是在使用Chrome调试器还是不使用Chrome调试器时,该应用程序都运行良好。然而,在iOS 8.1中,应用程序将被加载,列表可以被浏览,数据从服务器加载,等等。这在模拟器和物理设备上都经过测试,适用于两个操作系统 棘手的部分是,当使用Chrome调试器运行时,iOS 8.1。一切正常。当不使用Chrome调试器运行时,每当导航到新视图时,应用程序都会崩溃。我有一个自定义的滑动视图,所以我可以滑动到另一个视图,我可以看到所

我有一个在iOS上运行的react本机应用程序。在iOS 9.2上,无论是在使用Chrome调试器还是不使用Chrome调试器时,该应用程序都运行良好。然而,在iOS 8.1中,应用程序将被加载,列表可以被浏览,数据从服务器加载,等等。这在模拟器和物理设备上都经过测试,适用于两个操作系统

棘手的部分是,当使用Chrome调试器运行时,iOS 8.1。一切正常。当不使用Chrome调试器运行时,每当导航到新视图时,应用程序都会崩溃。我有一个自定义的滑动视图,所以我可以滑动到另一个视图,我可以看到所有的内容正确加载之前,它'解决'和崩溃。如果我只是尝试点击一个新页面,它几乎会立即崩溃

我的猜测(从中得知)是,这是一个时间问题,前提是我关于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可能也获得了sim卡中对toLocaleTimeString的支持。运行调试时报告的错误要具体得多,并向我指出了修复方法


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

我在react本机应用程序上遇到了一个非常类似的问题,除了我的iphone 6 plus(只有发行版)之外,其他所有程序都运行得非常完美,可能是因为它比我测试过的其他设备运行得更快。。。你找到解决问题的办法了吗?不幸的是还没有。我暂时已经把这个问题积压了下来。如果发现任何新内容,将进行更新。