喜氣洋洋,被安利使用iOS12,紅紅火火,更新最新版本。
網路上已經有人遇到 iOS 陣列相關的一個Bug,似乎會釀成整個網際網路風波。
Array state will be cached in iOS 12 Safari, is bug or feature? -- stackoverflow

iOS 12 的 safari 有哪些變化嗎?今天發現了一個 javascript 的問題 - V2EX

先來使用 IOS 12 體驗一下:


點選網頁上方的 Click Refresh,可以看到,網頁重新整理後,原網頁中,陣列的順序在第二次訪問網頁的時候,變成了倒序,即便是關閉網頁重新進來,也會是倒序的。如果反覆重新整理幾次,陣列將會反覆倒序。看起來是 Webview 將這個陣列快取了。
通過測試,Array的其他API並沒有這種問題,包括手動改變陣列中的元素順序,都不會出現這種問題,目前只發現了使用 reverse 出現這種問題。
當我們使用 reverse 去改變陣列順序的時候,那麼陣列的順序一定對我們來說特別重要,如果第二次進來還是最後的順序,這將對我們的應用產生非常大的影響!
緊急寫了一個檔案來應對這個問題,如果有必要,大家可以使用,如果有問題歡迎大家PR。 array-reverse-ios12
不知蘋果是否可以通過 HotPatch 來修復這個問題,如果不能那可能只能下次版本升級了。以蘋果的量級,這個版本可能會有影響很多使用者。