前言 這裡主要介紹一下Xcode10 版本主要更新的內容。 隨著iOS12的發佈,Xcode10已經可以從Mac App Store下載。 Xcode10包含了iOS12、watchOS 5、macOS10.14以及tvOS 12的SDK。另外,開發者可以從Xcode中看到當前Deployment ...
前言
這裡主要介紹一下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+點擊