XCode9新特性

小火爐發表於2017-10-31

題外話

隨著iOS 1011 的正式推送,新版開發工具Xcode9也相應的更新了。官網對新版XCode9對此一波牛B吹上天,就目前使用來說,還是很多bug的,比如一個.m實現檔案中如果IBOutlet太多的話,那麼修改和編碼這個.m檔案簡直就是噩夢,動一下卡一分鐘,甚至直接Crash。之前版本的Xcode還在繼續使用的IBOutlet左邊小圓點是實心,代表這個IBOutlet有與IB檔案有連線,點選可以跳轉到相應的IB檔案中相應的控制元件處,現在開啟IB檔案才會有實心圓點,否則基本都是空心圓。使用中也遇到多次不明原因的Crash,不過這一版的很多功能還是相當貼心的,也很強大!等Apple更新吧。
這是一次公司內部技術分享會的內容,內容共分為三個部分:

  • Xcode9新特性
  • iOS 11 適配
  • iPhone X適配
    這是第一個部分,如有需要請持續關注。
    言歸正傳。

Xcode9新特性

Compatibility-相容性

Xcode 9.0需要執行MacOS Sierra 10.12.4或更高版本的Mac。
想使用Xcode9,先升級Mac系統吧。複製程式碼

Simulator-模擬器

  1. 多個併發模擬器。同時執行多個模擬器。

     這個可以說是開發者除錯程式的福音啊,以後就可以在不同系統,不同機型上同時進行對比,除錯美滋滋~~~複製程式碼
  2. 從地圖,照片和Safari與模擬器共享資訊。
  3. 新增了關閉視窗或退出模擬器後執行模擬器的選項,以便與命令列工具的simctl命令更好地整合xcrun。
  4. 錄製模擬器的視訊。
  5. 通過選擇幫助>模擬器幫助獲取幫助。

Source Editing ( 原始碼編輯器)

  1. 更快,更多功能查詢和更換。

  2. 快速滾動任何大小的檔案。

  3. 直接操縱程式碼結構,如令牌和塊。

  4. 重新設計原始碼管理的整合。

  5. 重新設計錯誤和警告訊息的介紹。

  6. 支援Markdown。

    舉個?: 下面一段程式碼,在使用QuickHelp功能時,呈現MarkDown書寫的註釋

     /**
         ### 這是一段註釋 ###
         #### 使用markdown格式 ####
         * 引數1 double 型別
         * 引數2 double 型別
     */
         func sum (num1:Double,num2:Double) ->Double {
             return num1 + num2
         }
    
         let count = sum(num1: 1.0, num2: 2.0)複製程式碼

介紹這個功能,主要是覺得如果團隊規範程式碼格式的話,書寫著可以在寫註釋的時候更有幫助,讓使用者能得到檢視系統級別API的體驗。

Debugging

  1. iOS和tvOS裝置的網路除錯。(需要手機與電腦在統一網路上)

      通過WiFi或有線網路除錯iOS和tvOS裝置。
      通過Bonjour連線或輸入IP地址。
      第一次需要插入iOS裝置才能啟用網路除錯。複製程式碼
  2. 主執行緒檢查器。

     檢測未在主執行緒上進行的AppKit,UIKit和WebKit方法呼叫。
     在除錯期間自動啟用,並且可以在方案編輯器的“診斷”選項卡中禁用。
     主執行緒檢查器與Swift和C語言一起使用。
     通過深度過濾來增強Breakpoint導航器。
     新增了修改斷點的可視指示符。
     擴充套件檢視偵錯程式以顯示檢視控制器,並使用SceneKit和SpriteKit檢視。
     增強iOS電能表。複製程式碼

重構

  1. 跨Swift,C,Objective-C和C ++檔案的全域性重新命名。
  2. 重構。重構內建於編輯體驗之中,並可跨Swift,Objective-C,Interface Builder和許多其他檔案型別。
  3. 基於Swift4的相容性,可以相容構建Swift3
  4. 提供簡單的fix-it 功能。
  5. 自動補全缺少的協議方法
  6. 補全缺少的方法實現
  7. 提取變數. 方法和表示式
  8. 自動生成switch語句的case

Xcode Server

新建在Xcode伺服器。

在偏好配置中,配置Xcode伺服器和BOT許可權設定。
增加了雙因素身份驗證支援。
更新的機器人功能

支援自動和手動配置工作流。
傳遞額外的引數xcodebuild。
在裝置和模擬器上並行執行測試。
為測試配置語言和區域。
傳送“全部清除”電子郵件通知。

之前版本的Xcode也有類似的功能,但是需要單獨下載Xcode Server程式來進行專案的整合。現在已經整合到Xcode9.

Project Modernization(專案現代化)

  1. 當您開啟一個專案時,Xcode對其進行評估,以檢視是否應更新任何設定。此功能提供了一個簡單的方法來確保您的專案符合最新的SDK和最佳做法。

  2. 開啟問題導航器以檢視是否需要更新專案中的任何內容。您也可以在專案導航器中選擇專案,然後選擇編輯器>驗證設定。

  3. 如果問題導航器列出了現代化問題,請單擊該問題以檢視一個對話方塊,以解釋應該進行的更新,並允許您執行任何或所有更新。

  4. 單擊執行更改後,無論是否選擇進行所有更改,Xcode都不會再次顯示警告。要重新執行檢查,請在專案導航器中選擇專案,然後選擇編輯器>驗證設定。

Instruments

用於在跟蹤文件的圖形區域中固定圖形的新拆分檢視。

新增了所有策略,並將策略選擇器移動到跟蹤文件頂部的新工具欄。

增強型金屬除錯儀。

金屬系統跟蹤VR支援檢視事件,如合成器活動,姿勢查詢等

Interface Builder

    增加了對資產目錄使用命名顏色的支援。
    增加了對新邊距和基線檢視約束的支援。
    新增了對自動佈局安全區域指南的支援。
    增加了對全屏WatchOS應用程式的支援。複製程式碼

Metal 2 Support

  1. Capture API。

在你的程式碼中定義明確的捕獲邊界。
使用新MTLCaptureManager類和新MTLCaptureScope協議來程式設計設定,管理和觸發捕獲邊界。
使用擴充套件的Xcode GPU Capture UI手動啟動和停止捕獲。您還可以使用Xcode來捕獲應用程式中定義的API邊界。

  1. GPU計數器。

分析有關特定GPU捕獲的詳細分析指標。在iOS和tvOS中,GPU計數器顯示為命令編碼器的時間線;在macOS中,GPU計數器顯示為繪製或排程呼叫的時間線。

檢查渲染或計算流水線階段的執行時效能,例如頂點著色器,片段著色器,計算核心等。

比較每個流水線階段花費的GPU時間量,以查詢您的效能瓶頸。

  1. GPU備註。

在金屬著色語言程式碼中查詢優化機會。

在著色器編輯器中除錯特定於裝置的執行時問題。

遵循直接的解決方案和指示來改善您的程式碼。

  1. 智慧過濾。

通過鍵入到除錯導航器來查詢特定的除錯資訊。當您鍵入和突出顯示匹配的文字(例如資源,畫素格式,功能名稱,物件標籤等)時,Xcode會動態顯示建議。

通過從預定義的Metal物件選單中選擇選項來過濾搜尋結果。

使用多個匹配條件的多個過濾器。

  1. VR支援。

檢視VR提交和左眼/右眼提交的表面。

新增了紋理檢查,用於檢查渲染目標中各個畫素的值,如顏色,alpha,深度等。

新增檢查輸出頂點屬性到緩衝區編輯器。

新增資料提示支援金屬物件,如紋理,緩衝區和取樣器。

Source Control

新的原始碼管理導航器,用於檢視當前工作空間的分支,標籤和遠端儲存庫。

新的原始碼管理檢查器顯示所選導航器專案的詳細資訊。

分支歷史的新編輯器,包括一個方便導航的跳轉杆。

檔案差異的新的並行編輯器。

更容易和更快地訪問常見任務。

GitHub帳戶整合,輕鬆瀏覽和一鍵建立專案及相關的GitHub資源庫。

Swift (新的Xcode 9 -Swift 4)

Swift 4和Swift 3,Swift 4和Swift 3目標的一個編譯器可以在同一個專案中編譯。

改進的遷移者體驗,僅支援將選定目標遷移到Swift 4。

更快的通用程式碼和減少的程式碼大小。

Testing

並行測試裝置

對XCTest新增了新的APIs

控制和捕捉截圖。
團體測試活動。
測試附件。
在特有介面清理測試狀態。
在一個UI測試中應用多個應用程式。
使用指定的語言和區域執行測試。

General(其他功能)

  1. 更新了使用plist檔案定義文字巨集的方式。

       為專案中的使用者,專案或特定使用者定義文字巨集。
    
       自定義新的檔案頭。
    
       有關更多資訊。複製程式碼
  2. 更新了索引引擎,包括在編譯檔案時編制索引的能力。

  3. 裝置視窗被分成用於裝置和模擬器的單獨窗格。

Asset Catalogs

  1. 命名顏色支援。

  2. 新增了廣泛的應用程式圖示。

  3. 為App圖示集新增了更大的iOS營銷。

  4. 新增了保留影像向量資料以選擇動態型別縮放的選項。

  5. 增加了HEIF影像的支援。

Building and Linking

  1. 新增了一個在Swift中編寫的新構建系統的預覽。

  2. 提供更高的可靠性。

  3. 捕獲許多專案配置問題。

  4. 提高整體構建系統效能。

  5. 注意,構建系統效能不包括構建系統使用的編譯器,連結器和其他工具。

  6. 目前可選,並將成為未來版本的Xcode的預設值。

  7. 要選擇專案或工作區的新構建系統,請選擇“檔案”>“專案設定”或“檔案”>“工作區設定”,然後選擇“構建系統”型別的“新建構建系統(預覽)”。

  8. 有關與現有專案相容性的說明,請參閱Xcode版本說明。

Capabilities

  1. iOS熱點和多路徑TCP的新配置。

  2. 新的網路配置,包括內容過濾,代理DNS查詢以及代理TCP和UDP連線。

  3. 用於watchOS的新背景模式用於錄音和轉彎方向。

  4. tvOS背景提取的新模式。

Core ML( 核心ML編輯器)

  1. 為模型生成強型別介面。

  2. 用於裝置使用的模型編譯。

官網What's new in Xcode11

相關文章