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í),再重新加載。