簡體   English   中英

React Native iOS 8.1應用程序在訪問新視圖時崩潰 - 僅在不使用調試器時

[英]React Native iOS 8.1 app crashes when accessing a new view - ONLY when NOT using debugger

我有一個在iOS上運行的react-native應用程序。 在iOS 9.2上,應用程序運行完全正常,無論是在使用Chrome調試器還是不使用它時。 但是,在iOS 8.1中,應用程序將加載,並且可以刷新列表,從服務器加載數據等。這在兩個操作系統中都經過測試,可在模擬器和物理設備上運行。

當使用Chrome調試器iOS 8.1時,棘手的部分是。 按預期工作。 當它未與Chrome調試器一起運行時,只要導航到新視圖,應用程序就會崩潰。 我有一個自定義滑動視圖,因此我可以滑動到另一個視圖,我可以看到所有內容正確加載到“安定”和崩潰之前。 如果我只是嘗試點擊一個新頁面,它幾乎會立即崩潰。

我的猜測( 受此stackoverflow問題的教育)是,它是一個時間問題,只要我的假設iOS 8.1運行速度比iOS 9.2更正確。 我猜測調試器會減慢應用程序的速度,以至於計時問題本身並不存在。 話雖這么說,我在模擬器中嘗試了“慢動畫”模式,並且在不使用調試器時仍然崩潰。

考慮到這一點,我認識到它很可能是一個配置問題。 我正在運行XCode 7.2,並且正在使用react-native 0.21.0-rc。

嘗試單擊任意位置/更改視圖時出現的錯誤是:

null is not an object (evaluating '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導致不同的執行路徑。 希望這可以幫助其他人解決這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM