Xcode 8帶來的新特性和坑

A訫飛Flyme發表於2017-12-20

這麼晚還寫這些,主要是有些東西以前沒用到,最近使用到,所以寫下算做個記錄吧。 ##正文 ###Interface Builder Xcode6中在原有的Auto layout的基礎上,新增了Size Classes新特性,通過這個新特性可以使用一個XIB或者SB檔案,適配不同的螢幕以及iPhone和iPad兩種裝置。(本人喜歡程式碼控制)

  • 建立一個XIB檔案進去,點選下面紅框的位置,會出現從3.5寸-5.5寸一系列螢幕尺寸的選項。直接點選不同螢幕尺寸,以及橫豎屏選項,切換不同的螢幕顯示。在iPad上還可以選擇是否分屏,功能非常強大。在右邊有一個Vary for Traits ?按鈕,點選這個選項就可以同時顯示所有可選的螢幕樣式,只是顯示上看起來比較多,沒啥卵用(預設的XIB是6s的長方形,比之前正方形看起來舒服了).
    Interface Builder

在Xcode8之前,建立一個XIB或SB檔案,都是一個600*600的方塊。在Xcode8之後,建立的XIB檔案預設是6s尺寸的大小。 Xcode8開啟之前舊專案的XIB或SB檔案時,會彈出下面的“彈框”, 這時候一般直接選擇Choose Device即可。

彈框

但是這樣有個問題,如果Xcode8開啟過這個XIB檔案,並選擇Choose Device之後。其他的Xcode8以下版本的編譯器,會報以下錯誤: The document “ViewController.xib” requires Xcode 8.0 or later. This version does not support documents saved in the Xcode 8 format. Open this document with Xcode 8.0 or later. 有兩種方法解決這個問題: 也升級Xcode8,比較推薦這種方式,應該迎接改變。 右擊XIB或SB檔案 -> Open as -> Source Code,刪除xml檔案中下面一行欄位(如下)。

Xcode 8帶來的新特性和坑

###Target中General的變化 在Xcode8中可以通過Automatically manage signing選項,讓蘋果為我們管理證書和配置檔案,設定也都是由蘋果來完成的。在Xcode8中新建專案,這個選項預設是被勾選的(我也不習慣用,我都是debug release分開設定,這樣做demo時候直接用debug 萬用字元的profile)。

Target中General---Automatically manage signing

debug release分開設定

###Xcode外掛 在Xcode8中所有第三方外掛都失效了,在之前很多iOS開發者,都是通過Alcatraz來管理外掛的,現在Alcatraz也是不可用的。但是Xcode8自身也對編譯器進行了升級,將一些比較好的外掛功能加入到Xcode中(我常用的VVDocumenter-規範註釋生成器,快捷鍵是“option + command + / ”)。

在Xcode8中支援了開發外掛工程,並且為我們提供了一個外掛模板,開發的外掛可以上傳到App Store下載。蘋果這麼做有一個原因在於,之前Xcode和外掛是執行在同一個程式的,所以外掛的崩潰也會導致Xcode崩潰。蘋果現在將外掛作為一個單獨的應用程式,分開程式執行,不會對Xcode帶來其他影響。

沒用過,不清楚

###Runtime Issues 在開發過程中,因為語法或明顯的程式碼錯誤(例如Retain Cycle),編譯器可以發現並報黃色或紅色警告。但是一些因為程式碼邏輯導致的錯誤,編譯器並沒有辦法找到。例如因為程式碼邏輯的問題導致兩個陣列相互引用,都不能釋放。

陣列迴圈引用

通過Xcode8提供的Runtime Issues新特性,查詢到執行過程中出現的問題(紫色的感嘆號),並通過Graph的方式將問題視覺化的展現給開發者(不會用)

Debug Memory Graph

  • Debug Memory Graph 在Xcode6中出現了Debug View Hierarchy新特性,可以通過其除錯當前App的檢視層級。在Xcode8中蘋果為開發者提供了Debug Memory Graph特性(?圖片就是),可以直接選擇一個物件,檢視與其相關的記憶體關係。Debug Memory Graph和Runtime Issues可以配合使用,通過Debug Memory Graph分析記憶體關係完成後,點選Runtime Issues可以看到已經發現的記憶體問題。

Debug View Hierarchy

結束

相關文章