iOS10中的那些坑

1. 通訊錄、相冊等讀取權(quán)限變嚴(yán)格,必須在plist文件中填上相應(yīng)的描述才能訪問,否則會(huì)閃退

2. 字體變化導(dǎo)致某些label顯示出現(xiàn)問題。這個(gè)問題挺明顯的,應(yīng)該很多開發(fā)者都注意到了。

3. 今日擴(kuò)展的視圖大小固定了,要顯示全部必須點(diǎn)展開按鈕。另外跟3D touch一起使用時(shí),會(huì)在顯示快捷菜單的時(shí)候把今日擴(kuò)展的視圖也顯示出來,而且只有收縮狀態(tài),不可以展開?。?/p>

要解決這個(gè)問題,目前的辦法只能是通過xcode7來編譯,不能用xcode8來編譯。

另外,還有一個(gè)坑爹的地方,就是今日擴(kuò)展的視圖默認(rèn)的邊距改變了,ios10之前設(shè)置過UIEdgeInset的在ios10上會(huì)發(fā)生變化,如果不注意,就會(huì)被坑!

4. 想通過本地通知來修改badge的要注意了??! iOS10上的本地通知在前臺(tái)狀態(tài)下不生效了,必須在退到后臺(tái)之后再發(fā)才可以。被這個(gè)坑了好久。。有人可能會(huì)問,為什么不直接設(shè)置UIApplication的applicationIconBadgeBumber呢?因?yàn)槿绻麑⑵湓O(shè)置為0,通知欄中的所有該app的通知都會(huì)清除了。這是我們的產(chǎn)品不愿意看到的。

5.iOS10上NSUserDefault里面的內(nèi)容會(huì)被隨機(jī)清除,也就是說,如果你把登錄信息存在NSUserDefault中,那么有可能某天你就自動(dòng)退出登錄了。。而且偶現(xiàn)的問題要查起來你懂得。。。。

6.iOS10 上 iPhone5/5c 中運(yùn)行UIWebView 有一定概率會(huì)崩潰,經(jīng)查是JavaScriptCore中的某些方法出現(xiàn)了問題。。這個(gè)目前還沒找到具體原因,可能跟我們app中hook了JavaScriptCore的私有方法有關(guān),也有可能是系統(tǒng)bug。在其他機(jī)型和其他版本上沒有發(fā)現(xiàn)該問題。

------2017.6.7更新

7.最近發(fā)現(xiàn)iOS10上面有個(gè)崩潰挺嚴(yán)重的,使用FMDB的時(shí)候,內(nèi)部會(huì)調(diào)用一個(gè)函數(shù)sqlite3_prepare_v2,這個(gè)函數(shù)在iOS10.2上經(jīng)常崩潰,但是在iOS10.1和10.3上沒有崩潰,看來是系統(tǒng)的一個(gè)Bug。

首先分析場景:這個(gè)問題出現(xiàn)在我們的商品詳情頁,這個(gè)頁面的特點(diǎn)是視圖結(jié)構(gòu)非常復(fù)雜,內(nèi)嵌了3個(gè)webview,內(nèi)存消耗很高。我們在頁面一進(jìn)入的時(shí)候就會(huì)往數(shù)據(jù)庫里寫一條數(shù)據(jù),記錄瀏覽的商品信息。由于是購物的必經(jīng)頁面,所以崩潰很厲害。

?怎么解決呢?使用其他的存儲(chǔ)方式嗎?切換的成本有點(diǎn)大,數(shù)據(jù)很有可能丟失。但是又不能強(qiáng)制用戶升級系統(tǒng),只能想辦法規(guī)避??刹豢梢詼p少寫數(shù)據(jù)的頻次呢?或者先降低內(nèi)存的使用?這些都是突破口。

于是,我們從這兩個(gè)方面入手,先減少寫的頻次,這點(diǎn)可以由每次進(jìn)入頁面時(shí)寫數(shù)據(jù)改為定時(shí)去寫,先把要記錄的數(shù)據(jù)存到內(nèi)存中,然后批量寫入,這樣也可以減少讀寫的時(shí)間。內(nèi)存方面,之前我們這個(gè)頁面采用的UIWebView,眾所周知,UIWebView相當(dāng)耗內(nèi)存,于是我們改成使用 WKWebView。這個(gè)方案跟隨新版本上線之后,崩潰率降低了80%。由于數(shù)據(jù)比較敏感,就不貼圖了。

8. TCPIOConnection問題

先看問題:這是CFNetwork里面的崩潰,我們的網(wǎng)絡(luò)層用的是AFNetworking2.x 的代碼,從github上提的issue來看,應(yīng)該跟AFNetworking有關(guān),但是這個(gè)問題只出現(xiàn)在iOS10上,而且AFNetworking和我們自己的代碼都沒有引用SPDY這個(gè)框架,說明跟系統(tǒng)也有關(guān)系。這個(gè)問題暫時(shí)還在跟進(jìn)中,如果有解決方案會(huì)同步給大家。


9. WebGL問題:

? 在一次活動(dòng)中,H5頁面用到了一個(gè)webGL的庫,引發(fā)了iOS10上的崩潰,崩潰的關(guān)鍵詞是 ?libGPUSupportMercury.dylib _gpus_ReturnNotPermittedKillClient ?。


這個(gè)問題是在app退后臺(tái)之后,系統(tǒng)檢測到有web頁面在渲染,從而殺掉了進(jìn)程,導(dǎo)致崩潰。

解決方案比較簡單:當(dāng)app退后臺(tái)時(shí),發(fā)一個(gè)js事件給H5,H5接收到以后,關(guān)掉WebGL或者直接把H5頁面從當(dāng)前視圖中remove掉。當(dāng)app返回前臺(tái)時(shí),再重新加載。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,221評論 4 61
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,001評論 25 709
  • 過節(jié)和社會(huì)上有新聞熱點(diǎn)產(chǎn)生的時(shí)候,網(wǎng)上網(wǎng)下充斥的全部是清一色信息,無處可逃。 當(dāng)世界上只有一種花,一副畫,一種聲音...
    靈山閱讀 317評論 0 0
  • 【這是pirrer xue 的第37篇原創(chuàng)】 剛剛已經(jīng)一邊敷著面膜、一邊看完了大家的感想、思維導(dǎo)圖作業(yè) 一、 有幾...
    家易閱讀 399評論 1 0

友情鏈接更多精彩內(nèi)容