Xcode8遇到的問題及解決方案!!!

http://blog.csdn.net/jnbbwyth/article/details/52576169php

http://www.cocoachina.com/ios/20161227/18451.htmlcss

 

升級Xcode8已經是必然,升級iOS 10的用戶不能說大有人在,應該也不會少,樓主據說,若是不升級Xcode8,上架最新的包,那麼可能應用在iOS 10 上是不支持的.so,這些Xcode8的新特性,你應該瞭解!!! 

1.快捷鍵  command + /   註釋失效; html

解決方法1: Xcode -> preferences -> key bindings 中的comment selection 是否設置上快捷鍵了  ios

解決方法2: 第四個問題詳解

2.Xcode8支持iOS 8如下真機測試方法:web

  • 應用程序-Xcode 顯示包內容-Contents-Developer-Platforms-iPhoneOS.platform-DeviceSupport 把裏邊 6.0 6.1 7.0 7.1 的文件夾粘貼到xcode8 對應的文件夾內  數組

  • 應用程序-Xcode 顯示包內容-Contents-Developer-Platforms-iPhoneOS.platform-Developer-SDKs-iPhoneOS.sdk-SDKSettings.plist 文件下DefaultProperties - DEPLOYMENT_TARGET_SUGGESTE...  該數組中添加 6.0 6.1 7.0 7.1 對應的測試版本,(注意:若是你的文件是隻讀模式的,那麼是不能修改的,你須要把Contents-Developer-Platforms-iPhoneOS.platform-Developer-SDKs-  iPhoneOS.sdk-SDKSettings.plist 這些文件的只讀模式都改爲讀寫模式)這個版本排序必定要是從小到大,直接把小的添加到下面是無論用的,必須把小的拖到最上邊.這個時候退出你的Xcode,而後  從新啓動,你就會發現ios8.0如下的真機 也能夠正常測試了 

    xcode

3.若是項目中包含證書app

證書內包含的Id 必須與 bundle Id 保持一致才行,開發者team帳號必須建立了 該 bundle Id 對應的證書,就是說不是全部的蘋果帳號都能真機測試了(這裏說的是項目中有證書的前提下)

4.使用Xcode 8建立新項目ide

會讓你選擇開發者team爲了自動生成對應的證書。在新老項目的General中也能夠對簽名進行設置,勾選自動管理證書(可選的),Xcode會自動替你生成調試證書和描述問題,證書與描述文件有效期爲6天,避免了大量的垃圾冗餘證書佔用問題。

5.- (void)webView:(UIWebView *)webView didFailLoadWithError:(nullable NSError *)error;  變成了- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error

6.版本target 從8.0 起步了佈局

可是老代碼的7.1 用Xcode8 打開仍是顯示7.1,能夠手寫輸入7.1,仍然管用.

7.以前兩個漢字佔用24寬度,如今佔用27了

致使部分UI可能須要從新適配; 或者判斷下當前系統版本,若是>=10.0,就讓須要適配的控件調用  sizetofit  方法.

8.權限

* 麥克風權限: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 咱們須要經過您的地理位置信息獲取您周邊的相關數據

9.MJRefresh iOS10的系統上每次下拉刷新後沒辦法徹底恢復Normal 狀態  Y軸距離上老是相差20左右...(樓主我的也使用的MJ,表示暫時沒有發現這個問題)
解決方案

10.Itunes Connect上傳遇到問題,ERROR ITMS-90682: "Invalid Bundle. The asset catalog at 'Payload/ElitePlus.app/Assets.car' can't contain 16-bit or P3 assets if the app is targeting iOS releases earlier than iOS 9.3."   

解決方法一  解決方法二

    

11.iOS 10 因蘋果健康致使閃退 crash  原文連接

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'NSHealthUpdateUsageDescription must be set in the app's Info.plist in order to request write authorization.'

12.新增了CAAnimationDelegate,以前使用CAAnimation的文件須要強制添加代理

13.上架蘋果商店,若是上傳了ipa,可是在提交的時候構建版本的地方沒有?,那麼請肯定你應用中的權限是否已經添加,添加的權限描述是否填寫,推送是否已經開啓(視狀況而定);

14.教你如何科學的在Xcode8上使用插件  

轉自:AME_時雨 連接

 

好文推薦一

Xcode8的一些變更

內含:

證書管理/xib注意事項/代碼及Api注意/代碼註釋不能用的解決辦法/權限以及相關設置 6.字體變大,原有frame須要適配 7.推送 8.屏蔽雜亂無章的bug

好文推薦二

更新Xcode8的小夥伴是否是崩的不要不要的 

iOS 10相冊相機閃退bug
iOS 10 因蘋果健康致使閃退 crash
麥克風、多媒體、地圖、通信錄
iOS 10相機等崩潰
iOS 10 配置須知
iOS開發 適配iOS 10以及Xcode8

好文推薦三

iOS 10 推送須知

好文推薦四

Xcode8新特性和坑                       

好文推薦五

iOS 10 不log

 

 

 

 

 

1、證書管理

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


QQ20160913-8.png-96.9kB

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

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


QQ20160913-0.png-38.5kB


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

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


QQ20160913-2.png-33.7kB


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

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


QQ20160913-1.png-25.1kB


等待完成以後的圖


QQ20160913-3.png-27kB

2、Xib文件的注意事項

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


QQ20160913-9.png-41.7kB


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


QQ20160913-11.png-113.2kB
  • 注意:若是按上面的步驟操做後,在用Xcode7打開Xib會報一下錯誤,

QQ20160913-12.png-32.3kB
  • 解決辦法:須要刪除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內置了開啓註釋的功能,位置在這裏


QQ20160914-3.png

快捷鍵的設置在這裏


QQ20160914-2.png

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

5、權限以及相關設置

注意,添加的時候,末尾不要有空格
咱們須要打開info.plist文件添加相應權限的說明,不然程序在iOS10上會出現崩潰。
具體以下圖:


QQ20160914-0.png

麥克風權限: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、推送

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


QQ20160914-4.png

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

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, 或者用快捷鍵打開:ctrl+shift+<,在Environment Variables裏邊添加
OS_ACTIVITY_MODE = Disable 

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

 
6
相關文章
相關標籤/搜索