Xcode 8包括所有你需要的東西,去創建令人驚歎的iPhone、iPad、Mac、Apple Watch和Apple TV 應用程序,這從根本上是更快的IDE版本,您可以使用新的編輯器擴展完全定制化你的編碼經驗。新的運行時問題提醒你隱藏的bug指出內存洩漏,和一個新的內存調試器使你更深入到對象中。Swfit 3包括更自然的和一致的API命名,你可以iPad中嘗試新的Swift Playgrounds 應用程序。
Interface Builder 界面構建器——加速
Interface Builder 設計畫布已經徹底再造工程,讓你更快地工作並且提供更大的控制。在任何充滿活力的蘋果設備上看到一個完全實時的應用程序預覽。當為size classes定制UI,可以在不同的設備之間快速切換,你總會看到相同的界面。平移和縮放非常快,甚至你可以縮小故事板鳥瞰圖時編輯你的界面。
編輯器擴展 Editor Extensions
新的Xcode源碼編輯器擴展,讓您自定義編碼經驗。使用擴展編輯器的 導航編輯的文本,選擇,修改和改變你的代碼。綁定快捷鍵到你最喜歡的擴展,使普通重復化任務易如反掌。Xcode中包括一個新的模板,以便您可以輕松創建編輯器的擴展並且在Mac App Store分發它們,或與登錄您的開發者ID在線共享您的擴展。由於擴展在一個單獨的進程中運行時,保持Xcode安全穩定。
新的Xcode 8編輯器還包括建立在以下基礎上的新特性:
舊金山Mono字體的新主題
快速自動生成幫助文檔
高亮當前行
在Swfit代碼中 圖像和顏色文本
Swift 3
Swift 3 是第一個主要的release版本。這個release版本統一核心API命名規則,基於一個新的公共API命名指南文檔,使你用Swift編寫代碼更加自然。流行的系統API,如Core Graphics和 Grand Central Dispatch 與Swfit有著更豐富的表現力和協調力。你也可以在在線iPad應用程序Swift Playgrounds中體驗 Swift3。
運行時問題 Runtime Issues
這Xcode新特性,自動識別跟蹤找到漏洞並且報告問題, 有些很難跟蹤的bug,直到您的應用程序到了用戶手中,也可能沒有被發現。
Thread Sanitizer spots:新的線程污點清理器, 解決多線程情況下的資源競爭條件,數據的變化和其它相關線程的bug
View Debugger:使用更新的帶有更大的保真度和視覺精度檢查UI約束問題的視圖調試器
簽名變的簡單而強大 Signing Made Easy and Powerful
設備設置和代碼簽名有了極大的簡化,新的自動化代碼管理系統可以幫開發者自動簽署他們需要的資源,從而讓代碼在你蘋果設備的應用程序中正確地簽名、調用和執行。開發者也可以選擇手動配置文件,並且設置每個構建配置的簽名程序,如果遇到任何問題,報告導航器會用需要改進的錯誤消息和日志提醒你。當你有個多個Mac的時候,Xcode會在每個Mac中自動生成對應的開發者證書
在你的蘋果設備上開發和運行您的應用程序和進入Xcode的偏好設置輸入Apple ID一樣容易。蘋果開發者賬號不是必需的。
Provisioning Profile 文件選取,已經從Buiid Settings移動到了General中,Buiid Settings中已經標識了 Deprecated。
使用Xcode 8創建新項目的時候,會讓你選擇開發者team為了自動生成對應的證書。
在新老項目的General中也可以對簽名進行設置,勾選自動管理證書(可選的),Xcode會自動替你生成調試證書和描述問題,證書與描述文件有效期為6天,避免了大量的垃圾冗余證書占用問題。
今天在繼續優化之前寫的圖片多選小demo的時候無意用Xcode8 打開了(用過的小伙伴應該知道,點擊項目文件的話默認就是用Xcode8來打開的吧),在調用發生了崩潰現象,一開始以為是巧合,但嘗試了第二次之後,似乎意識到確實出了問題,從而關注控制台(為什麼之前沒有看,是因為Beta版不管有沒有出現錯誤都會打印一堆的東西,索性就不看了),這個時候就注意到了這句Xcode給我們的忠告:
[access] This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data.
不難翻譯,大體意思就是這個App缺少一個獲取私有(敏感)數據的權限描述,需要我們在info.plist文件中必須含有一個名字叫做NSPhotoLibraryUsageDescription的值來解釋為什麼應用需要使用這個數據,沒錯,獲取相冊資源的鍵值就是NSPhotoLibraryUsageDescription
感覺它”友好”的提示之後,就去plist文件中添加了下面的鍵值:
這個時候再點擊獲取圖片資源,就彈出了一個獲取權限的問候,不會發生崩潰了:
通過類似事情,說明iOS10對用戶的隱私又做了進一步加強,就好像當初iOS8對定位隱私進行加強一樣,作為開發者的我們貌似也是應該時刻保持這種對新知識警覺性的。
除了相冊的權限,iOS10之後如下的權限請求也是需要我們填寫請求描述的,在這裡也給大家提醒一下:
Privacy - Microphone Usage Description //麥克風權限
Privacy - Contacts Usage Description //通訊錄權限
Privacy - Camera Usage Description //攝像頭權限