iOS開發 適配iOS10以及Xcode8

如今在蘋果的官網上,咱們已經能夠下載到Xcode8的GM版本了,加上9.14日凌晨,蘋果就要正式推出iOS10系統的推送了,在此之際,iOS10的適配已經迫在眉睫啦,不知道Xcode8 beat版本,童鞋們有木有下載過來試試呢?就個人使用來講,整體以爲蘋果仍是坑不斷,可是也在一直進步的啦。下面我就來講說,iOS10的適配以及Xcode8使用上的一些注意點。ios

1、證書管理

用Xcode8打開工程後,比較明顯的就是下圖了,這個是蘋果的新特性,能夠幫助咱們自動管理證書。建議你們勾選這個Automatically manage signing(Ps.可是在beat2版本我用的時候,徹底不能夠,GM版本居然神奇的又好了。)web

下面我來講說可能會出現的問題:xcode

1.Xcode未設置開發者帳號狀況下的截圖bash

解決辦法是:你們在Xcode的偏好設置中,添加蘋果帳號,便可。網絡

2.設備機器未添加進開發者的Device狀況下的截圖多線程

解決辦法是:你們在官網將設備添加進開發機後,陪下描述文件從新下個描述文件便可。架構

3.正常狀況:Xcode配置登陸開發者帳號後的圖片,耐心等待便可。app

等待完成以後的圖ide

2、Xib文件的注意事項

使用Xcode8打開xib文件後,會出現下圖的提示。佈局

你們選擇Choose Device便可。 以後你們會發現佈局啊,frame亂了,只須要更新一下frame便可。以下圖

注意:若是按上面的步驟操做後,在用Xcode7打開Xib會報一下錯誤,

解決辦法:須要刪除Xib裏面

<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
 
複製代碼

這句話,以及把< document >中的toolsVersion和< plugIn >中的version改爲你正常的xib文件中的值 ,不過不建議這麼作,在Xcode8出來後,但願你們都快速上手,全員更新。這就跟Xcode5到Xcode6同樣,有變更,可是仍是要儘早學習,儘快適應喲!

3、代碼及Api注意

使用Xcode8以後,有些代碼可能就編譯不過去了,具體我就說說我碰到的問題。 1.UIWebView的代理方法: **注意要刪除NSError前面的 nullable,不然報錯。

- (void)webView:(UIWebView *)webView didFailLoadWithError:(nullable NSError *)error
{
    [self hideHud];
}
複製代碼

4、代碼註釋不能用的解決辦法

這個是由於蘋果解決xcode ghost,把插件屏蔽了。

解決方法

打開終端,命令運行: sudo /usr/libexec/xpccachectl 而後必須重啓電腦後生效

注意:Xcode8內置了開啓註釋的功能,位置在這裏

快捷鍵的設置在這裏

貌似Xcode8取消了三方插件的功能,具體能夠查閱下Xcode8 Source Editor

5、權限以及相關設置

注意,添加的時候,末尾不要有空格

咱們須要打開info.plist文件添加相應權限的說明,不然程序在iOS10上會出現崩潰。

具體以下圖:

麥克風權限:Privacy - Microphone Usage Description 是否容許此App使用你的麥克風? 相機權限: Privacy - Camera Usage Description 是否容許此App使用你的相機? 相冊權限: Privacy - Photo Library Usage Description 是否容許此App訪問你的媒體資料庫?通信錄權限: Privacy - Contacts Usage Description 是否容許此App訪問你的通信錄? 藍牙權限:Privacy - Bluetooth Peripheral Usage Description 是否許允此App使用藍牙? 語音轉文字權限:Privacy - Speech Recognition Usage Description 是否容許此App使用語音識別? 日曆權限:Privacy - Calendars Usage Description 是否容許此App使用日曆? 定位權限:Privacy - Location When In Use Usage Description 咱們須要經過您的地理位置信息獲取您周邊的相關數據 定位權限: Privacy - Location Always Usage Description 咱們須要經過您的地理位置信息獲取您周邊的相關數據 定位的須要這麼寫,防止上架被拒。

6、字體變大,原有frame須要適配

經有的朋友提醒,發現程序內原來2個字的寬度是24,如今2個字須要27的寬度來顯示了。。 但願有解決辦法的朋友,評論告我一下耶,謝謝啦

7、推送

以下圖的部分,不要忘記打開。全部的推送平臺,不論是極光仍是什麼的,要想收到推送,這個是必須打開的喲✌️

以後就應該能夠收到推送了。另外,極光推送也推出新版本了,你們也能夠更新下。

PS.蘋果此次對推送作了很大的變化,但願你們多查閱查閱,處理推送的代理方法也變化了。

// 推送的代理
[<UNUserNotificationCenterDelegate>] 
複製代碼

iOS10收到通知再也不是在 [application: didReceiveRemoteNotification:]方法去處理, iOS10推出新的代理方法,接收和處理各種通知(本地或者遠程)

- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler { //應用在前臺收到通知 NSLog(@"========%@", notification);}- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler { //點擊通知進入應用 NSLog(@"response:%@", response);}
複製代碼

稍後我會更新文章,對推送作一個詳細的講解。

8.屏蔽雜亂無章的bug

更新Xcode8以後,新創建工程,都會打印一堆莫名其妙看不懂的Log. 如這些

subsystem: com.apple.UIKit, category: HIDEventFiltered, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 1, 
複製代碼

屏蔽的方法以下: Xcode8裏邊 Edit Scheme-> Run -> Arguments, 在Environment Variables裏邊添加 OS_ACTIVITY_MODE = Disable

若是寫了以後仍是打印log,請從新勾選對勾,就能夠解決了

Ps.考慮到添加上述內容在Xcode8後,真機調試可能出現異常,你們能夠自定義一個宏定義,來作日誌輸出。

#ifdef DEBUG

#define DDLOG(...) printf(" %s\n",[[NSString stringWithFormat:__VA_ARGS__]UTF8String]);
#define DDLOG_CURRENT_METHOD NSLog(@"%@-%@", NSStringFromClass([self class]), NSStringFromSelector(_cmd))

#else

#define DDLOG(...) ;
#define DDLOG_CURRENT_METHOD ;

#endif
複製代碼

你們有任何問題,能夠評論給我~ 若是寫的不錯,但願你們能夠關注我。感謝。

歡迎你們來咱們的iOS交流社區,一塊兒來交流學習,我會按期分享一些我學習ios開發 主要逆向安防、架構設計、多線程,網絡進階,還有底層 的學習的資料

加qq邀請你加入 2507671038

相關文章
相關標籤/搜索