前言
這里主要介紹一下Xcode10 版本主要更新的內容。
隨着iOS12的發布,Xcode10已經可以從Mac App Store下載。
Xcode10包含了iOS12、watchOS 5、macOS10.14以及tvOS 12的SDK。另外,開發者可以從Xcode中看到當前Deployment Target最低為iOS8,所以后續開發過程中個人覺得可以忽略iOS8之前的一些特性。
要想安裝Xcode10,mac系統版本必須是macOS 10.13.6或者更高。這里對主要的一些變更做一些介紹(並非所有)。
新特性
-
NSData類型的數據可以直接導出來。例如一張圖片轉成data之后,在快速瀏覽框可以直接將data導出,最終保存成包含二進制的文件。
-
新建的schemes默認被所有用戶共享。如果想建一個私人的scheme,在Manage Schemes中不選擇Shared即可。
-
快捷鍵“Ctrl+0”可以打開彈出scheme選擇,“Ctrl+Shift+0”可以彈出運行設備選擇。當彈框出來的時候,可以直接使用鍵盤上的上下左右選擇,然后點擊回車即可選中。
-
Library控件庫的位置從原來的右下角移動到了頂部,默認選中一個控件往StoryBoard拖得時候Library控件庫會關閉,按住Option鍵可以在拖動控件的時候保持Library庫不消失:
-
Library的位置從底部移動到了Inspector的上方window中。現在變得更加靈活,想Spotlight Search那樣可以隨意拖動,當元素拖動的時候,該Library框就會消失。但是如果按住Option鍵拖動,該彈框就不會消失。
現有問題
如果打開存儲在iCloud Drive中保存的Xcode工程或者workspaces,或者是為存儲在iCloud Drive中的工程通過git(其他version管理工具)切換分支,可能會導致Xcode終止運行。
已解決的問題
-
新建的文件.h默認包含NS_ASSUME_NONNULL_BEGIN 和NS_ASSUME_NONNULL_END。這兩個宏之間的代碼,所有指針對象都會假定為nonull,所以我們在開發的時候只需要指定那些nullable的對象即可。
棄用的東西
- C++庫libstdc++在Xcode8的時候已經棄用,在Xcode10以及之后將不再支持(iOS target)。C++工程必須遷移到libc++。除了修改c++標准庫的build setting,開發者還應該查看一下硬編碼的linker flags和target的依賴,刪除libstdc++(包括-lstdc++、-lstdc++6.0.9、libstdc++6.0.9.tbd和libstdc++6.0.9.dylib)的引用。項目中依賴的針對libstdc++構建的靜態歸檔文件也需要針對libc++重新構建。(也就是說我們需要檢查一下Target的Build Phases,里面的Link Binary With Libraries如果包含上述提到的庫,需要刪除,並且移除DrivedData)。
- 移除了對Subversion的支持。
- Xcode10是最后一個支持Swift3的版本。通過打開Project>Edit> Convert>To Current Swift Syntax..來將Swift3的代碼轉成swift4.2。
- macOS 10.14SDK不再支持32位程序。如果開發者需要編譯i386,使用Xcode9.4或者更早版本的Xcode。
設備
使用Xcode10運行老版本Xcode構建的WatchKit app,將會報錯:“TheWatchKit app has an invalid stub executable”。解決辦法:Clean build文件夾,然后從新運行。
文檔查看
-
按住option查看Quick Help的彈框展示內容變成了單列布局格式,並且選中查看的方法在彈框中展示的背景顏色和當前Xcode主題顏色一致:(當前為黑色主題,彈框的注釋內容也是黑色)
模擬器
-
原來在模擬器的Edit菜單有專門的Get PasteBoard && Send PasteBoard來做復制粘貼同步,現在在該菜單下有一個專門的item來處理復制粘貼操作:AutoMatically Sync PasteBoard。也就是說只要使用這個功能即可實現粘貼復制在mac和模擬器數據的同步。
編輯器
-
支持多cursor編輯。快捷鍵:shift+control+點擊(如果想取消某個cursor,則再次點擊即可)
-
不連續選中操作支持:control+shift+點擊