這篇文章將為大家詳細(xì)講解有關(guān)XCode9的變化有哪些,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
成都創(chuàng)新互聯(lián)是一家以網(wǎng)站建設(shè)公司、網(wǎng)頁(yè)設(shè)計(jì)、品牌設(shè)計(jì)、軟件運(yùn)維、網(wǎng)站推廣、小程序App開發(fā)等移動(dòng)開發(fā)為一體互聯(lián)網(wǎng)公司。已累計(jì)為火鍋店設(shè)計(jì)等眾行業(yè)中小客戶提供優(yōu)質(zhì)的互聯(lián)網(wǎng)建站和軟件開發(fā)服務(wù)。
1 折疊代碼
焦點(diǎn)在方法的實(shí)現(xiàn)體的方法名上,按comman鍵,則整個(gè)函數(shù)會(huì)被框住.用來(lái)標(biāo)志這個(gè)方法的起點(diǎn)和終點(diǎn)
此時(shí)單擊,出現(xiàn)菜單
在菜單里,有個(gè)Fold,可以用來(lái)折疊方法,這個(gè)折疊現(xiàn)在有個(gè)動(dòng)畫效果
在其它上面點(diǎn)擊
常用的重構(gòu)方式都已經(jīng)集成在這個(gè)右鍵彈出菜單中了,可見,XCode9對(duì)于重構(gòu)的支持度又增加了,以后重構(gòu)代碼將更加方便快捷
在XCode9之前,在變量或方法上,按CMD+單擊,是直接Jump to Definition,但是現(xiàn)在,是彈出這個(gè)菜單,對(duì)于跳轉(zhuǎn)到變量的定義,就多了一步了,開始可能會(huì)覺(jué)得不方便
對(duì)于想直接跳轉(zhuǎn)到變量定義,現(xiàn)在是 control+command+單擊
當(dāng)然,如果你還是覺(jué)得以前的cmd+單擊 跳轉(zhuǎn)到變量定義,你更習(xí)慣,可以在
更改為以前那種行為
2 關(guān)于警告
我們定義一個(gè)不帶參數(shù)的block,通常是如下的方式
typedefvoid(^UpdateSwichBtnBlock)();
在xcode9中會(huì)提示一個(gè)警告
This block declaration is not a prototype Insert ‘void'
解決方式可以是如下的幾種
typedefvoid (^UpdateSwichBtnBlock)(void);
但是這樣,很多第三方要改,涉及的面太大了,目前可能不太適合,雖然這個(gè)是趨勢(shì).
或者,如果只是很少的地方,也可以使用
#pragma clang diagnostic push #pragma clang diagnostic ignored "-Wstrict-prototypes" typedefvoid (^UpdateSwichBtnBlock)(); #pragma clang diagnostic pop
徹底的暫時(shí)解決所有這種警告的方式
在工程的設(shè)置中
設(shè)置為NO,則這些警告就消失了
不過(guò)這不是一種好習(xí)慣,只是暫時(shí)性的不讓提示這種類型的警告而已
3 重構(gòu)相關(guān)
對(duì)一個(gè)方法或者變量的重命名,在方法上CMD+單擊,出現(xiàn)的菜單,選擇rename
可以看到,它把重命名會(huì)出現(xiàn)的改動(dòng),都動(dòng)畫折疊起來(lái),讓你更有概念,將會(huì)影響哪些,更直觀!
4 cmd +/- 可以用來(lái)調(diào)整編輯器的字體大小了
在展示PPT的時(shí)候?qū)⒑苡杏?/p>
5 Source Control的極大增強(qiáng)
XCode內(nèi)置的git系統(tǒng)感覺(jué)已經(jīng)很強(qiáng)大了,感覺(jué)以后可以拋棄三方的了.
支持Github賬戶了
XCode - Preferences -Accouts 可以登錄你的GitHub賬戶,登錄后如下
登錄后,通過(guò)Xcode的菜單
Source Control 最下方的clone,就可以clone你的github上的工程了,是不是非常方便
上面還貼心的提供了搜索框,如果你的github上的工程很多,也是很方便的定位的
打開任意一個(gè)git工程,
提供了一列新的 Show the Source COntrol navigator
這里列出來(lái)了你的branch的相關(guān)信息,可以很方便的切換分支,等等git操作
在右邊的編輯框中,可以看到最上面一排
ALL, Last 24 hours ,Last 7 Days ,Last 30 Days
,還有一個(gè)Filter過(guò)濾框,可以非常方便的用來(lái)定位到我們需要尋找的提交記錄.
雙擊任意一次提交記錄,
可以看到這次的詳細(xì)更改內(nèi)容
對(duì)于我們常用的git的merge tag等,也都內(nèi)置了強(qiáng)力的支持
第三方git客戶端如Tower何Source Tree,分分鐘要被拋棄的節(jié)奏呢.
6 新的構(gòu)建系統(tǒng)
這個(gè)新的構(gòu)建系統(tǒng)現(xiàn)在還只是Preview,它是純swift編寫的,據(jù)說(shuō)對(duì)編譯速度的提升幫助很大,不過(guò)目前并沒(méi)有成為默認(rèn),蘋果說(shuō)不遠(yuǎn)的將來(lái)將會(huì)成為默認(rèn)的Build .可以參考蘋果的官方文檔xcode_9.html
這里有個(gè) New Build System(Preview)
7 crash可以直接在本機(jī)上看到了
當(dāng)然了,這要用戶在機(jī)器上允許,還有你提交到appstore時(shí)候允許了才會(huì)有.
8 runtime問(wèn)題檢測(cè)
在8中,已經(jīng)包含了Address Scanitizer和Thread Scanitizer,在Xcode9中,又新增了 Undefiner Behavior Scanitizer,它可以實(shí)時(shí)的檢測(cè)一系列的問(wèn)題.不過(guò)我們更能明顯感受到的是Main Thread Checker,它可以在運(yùn)行時(shí)確保你沒(méi)有把UI更新 代碼寫在了非主線程中
例如,代碼中
可見還是很強(qiáng)大的,雖然我們沒(méi)有Fabric的源碼,但是其內(nèi)部調(diào)用了[UIApplicationsharedApplication].statusBarOrientation],還是被檢測(cè)到了
當(dāng)然了,如果你想關(guān)掉它,可以在 scheme editor中操作
9 模擬器可以多開了,并且,模擬器可以登錄
不僅如此,現(xiàn)在模擬器也可以登錄你的appid了,這樣,就很方便的同步聯(lián)系人等信息到模擬器上了,以前要測(cè)試聯(lián)系人相關(guān)的功能,還要自己一個(gè)個(gè)的新建,現(xiàn)在就方便多了
還有,如果開啟了Photo的Share,那么模擬器中應(yīng)該也能同步照片過(guò)來(lái)了,以前那種一個(gè)個(gè)的導(dǎo)入圖片的方式終于可以說(shuō)再見的時(shí)候了
模擬器現(xiàn)在可以任意的調(diào)整大小了,不得不說(shuō)這個(gè)功能太酷了
登錄appid后,Files就可用了,可以瀏覽到你的iCloud Drive中的內(nèi)容了,對(duì)于要共享文件到模擬器的需求來(lái)說(shuō),也變得超級(jí)方便
模擬器的外觀樣式也回歸了,直接是iPhone的外觀了,以前可能是因?yàn)槟M器不能任意調(diào)整大小,所以才沒(méi)外觀的吧
當(dāng)然了,你可以去掉外觀皮膚. 在模擬器的Window show Device Bezels,去掉選項(xiàng)就和以前一樣了
10 無(wú)線開發(fā)
這個(gè)只支持ios11的機(jī)器,很簡(jiǎn)單,只要在Device那打開支持就行.
11 Folder和Group的同步性
之前,我們?cè)赬Code中,更改Folder的名字,在FInder中工程對(duì)應(yīng)的文件夾的名字并不會(huì)同步的改變,這會(huì)造成我們重命名文件夾變得非常不方便,往往要先在XCode中移除,然后在Finder中重命名,再添加回Xcode
現(xiàn)在 在Xcode9中重名命Folder,Finder中的也同步的改變了
我們之前建議一個(gè)虛擬的group,并不會(huì)在對(duì)應(yīng)的文件夾中建立真實(shí)的目錄,當(dāng)然,這可能是你需要的,也可能是你不需要的功能.在9中,默認(rèn)行為改變了.變成了會(huì)建立對(duì)應(yīng)的真實(shí)文件夾.如果還想像之前那樣只是建立虛擬的group,需要選擇New Group without Folder
你可能你會(huì)擔(dān)心,區(qū)分不了這個(gè)group到底是虛擬的,還是實(shí)際的
放心,蘋果給出了標(biāo)識(shí)來(lái)區(qū)分的,虛擬的左下角有個(gè)小的三角形
當(dāng)你移動(dòng)一個(gè)Group的時(shí)候(虛擬的實(shí)際的都一樣),它會(huì)同步的把對(duì)應(yīng)的真實(shí)文件夾也移動(dòng)到對(duì)應(yīng)的位置,這個(gè)極大的方便了我們后期調(diào)整工程的目錄結(jié)構(gòu),之前調(diào)整那才叫痛苦,在工程中調(diào)整了后,工程中的結(jié)構(gòu)和真實(shí)的文件夾下的對(duì)應(yīng)不上,以后不會(huì)出現(xiàn)這種情況了
這里發(fā)現(xiàn)XCode9的一個(gè)文件同步的bug
如圖,我們建立的工程如下
其中 xuni這個(gè)是一個(gè)虛擬目錄
這個(gè)時(shí)候,如果我們將整個(gè) xuni移動(dòng)到Views下,
可以看到,xcode出問(wèn)題了,本來(lái)我只是將xuni移動(dòng)到Views下,可現(xiàn)在 真?zhèn)€的View1都移動(dòng)了,導(dǎo)致SecondView消失了....
希望蘋果在下個(gè)版本中能解決這個(gè)問(wèn)題
其實(shí)從上面來(lái)看,建立實(shí)際目錄更不容易出問(wèn)題,可能這也是蘋果將New Group的默認(rèn)行為改為建立對(duì)應(yīng)的實(shí)際文件夾了吧
不常用的更新
Server & Bots
現(xiàn)在XCode內(nèi)置了一個(gè)XCode Serever用于 持續(xù)集成,因?yàn)楹苌儆玫?也就不展開了
關(guān)于“XCode9的變化有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。