我有一个在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导致不同的执行路径.希望这可以帮助其他人解决这个问题.