XCode9的新變化

来源:http://www.cnblogs.com/lurenq/archive/2017/09/26/7594909.html
-Advertisement-
Play Games

XCode9已經隨著ios11的發佈發佈了,那麼在這個XCode9版本中有哪些變化呢? 1 摺疊代碼 焦點在方法的實現體的方法名上,按comman鍵,則整個函數會被框住.用來標誌這個方法的起點和終點 此時單擊,出現菜單 在菜單里,有個Fold,可以用來摺疊方法,這個摺疊現在有個動畫效果 在其它上面點 ...


XCode9已經隨著ios11的發佈發佈了,那麼在這個XCode9版本中有哪些變化呢?

1 摺疊代碼

焦點在方法的實現體的方法名上,按comman鍵,則整個函數會被框住.用來標誌這個方法的起點和終點

此時單擊,出現菜單

1552510-36f85a3829b8db36.png

在菜單里,有個Fold,可以用來摺疊方法,這個摺疊現在有個動畫效果

在其它上面點擊

1552510-10bf5eca5407a7ec.png

常用的重構方式都已經集成在這個右鍵彈出菜單中了,可見,XCode9對於重構的支持度又增加了,以後重構代碼將更加方便快捷

在XCode9之前,在變數或方法上,按CMD+單擊,是直接Jump to Definition,但是現在,是彈出這個菜單,對於跳轉到變數的定義,就多了一步了,開始可能會覺得不方便

對於想直接跳轉到變數定義,現在是 control+command+單擊

當然,如果你還是覺得以前的cmd+單擊 跳轉到變數定義,你更習慣,可以在

1552510-d25c31fa1bb8744b.png

更改為以前那種行為

2 關於警告

我們定義一個不帶參數的block,通常是如下的方式

1 typedefvoid (^UpdateSwichBtnBlock)();

在xcode9中會提示一個警告

 

1 2 This block declaration is not a prototype Insert ‘void'

解決方式可以是如下的幾種

1 typedefvoid (^UpdateSwichBtnBlock)(void);

但是這樣,很多第三方要改,涉及的面太大了,目前可能不太適合,雖然這個是趨勢.

或者,如果只是很少的地方,也可以使用

 

1 2 3 4 #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wstrict-prototypes" typedefvoid (^UpdateSwichBtnBlock)(); #pragma clang diagnostic pop

徹底的暫時解決所有這種警告的方式

在工程的設置中

1552510-c35b7f2de8d6a831.png

設置為NO,則這些警告就消失了

不過這不是一種好習慣,只是暫時性的不讓提示這種類型的警告而已

3 重構相關

對一個方法或者變數的重命名,在方法上CMD+單擊,出現的菜單,選擇rename

1552510-055c8c9dc7f4f73f.png

可以看到,它把重命名會出現的改動,都動畫摺疊起來,讓你更有概念,將會影響哪些,更直觀!

4 cmd +/- 可以用來調整編輯器的字體大小了

在展示PPT的時候將很有用

5 Source Control的極大增強

1552510-dc10b6577c8a0e59.png

XCode內置的git系統感覺已經很強大了,感覺以後可以拋棄三方的了.

支持Github賬戶了

XCode - Preferences -Accouts 可以登錄你的GitHub賬戶,登錄後如下

1552510-4fea1840288c221f.png

登錄後,通過Xcode的菜單

Source Control 最下方的clone,就可以clone你的github上的工程了,是不是非常方便

1552510-6c355d6ed60af3a0.png

上面還貼心的提供了搜索框,如果你的github上的工程很多,也是很方便的定位的

打開任意一個git工程,

1552510-20b8a14de858fb04.png

提供了一列新的 Show the Source COntrol navigator

這裡列出來了你的branch的相關信息,可以很方便的切換分支,等等git操作

1552510-29f171b5c55d286c.png

在右邊的編輯框中,可以看到最上面一排

ALL, Last 24 hours ,Last 7 Days ,Last 30 Days

,還有一個Filter過濾框,可以非常方便的用來定位到我們需要尋找的提交記錄.

雙擊任意一次提交記錄,

可以看到這次的詳細更改內容

1552510-3fd5dc74ff83ea8e.png

對於我們常用的git的merge tag等,也都內置了強力的支持

1552510-5d0141d986311c3f.png

第三方git客戶端如Tower何Source Tree,分分鐘要被拋棄的節奏呢.

6 新的構建系統

這個新的構建系統現在還只是Preview,它是純swift編寫的,據說對編譯速度的提升幫助很大,不過目前並沒有成為預設,蘋果說不遠的將來將會成為預設的Build .可以參考蘋果的官方文檔xcode_9.html

1552510-d82d534ef27a7da3.png

這裡有個 New Build System(Preview)

7 crash可以直接在本機上看到了

當然了,這要用戶在機器上允許,還有你提交到appstore時候允許了才會有.

1552510-7ccd0b36376120b7.png

8 runtime問題檢測

在8中,已經包含了Address Scanitizer和Thread Scanitizer,在Xcode9中,又新增了 Undefiner Behavior Scanitizer,它可以實時的檢測一系列的問題.不過我們更能明顯感受到的是Main Thread Checker,它可以在運行時確保你沒有把UI更新 代碼寫在了非主線程中

例如,代碼中

1552510-415b89b26aef311d.png

可見還是很強大的,雖然我們沒有Fabric的源碼,但是其內部調用了[UIApplicationsharedApplication].statusBarOrientation],還是被檢測到了

當然了,如果你想關掉它,可以在 scheme editor中操作

1552510-2f87957603aea1e8.png

9 模擬器可以多開了,並且,模擬器可以登錄

1552510-7aff3d16ef4117aa.png

不僅如此,現在模擬器也可以登錄你的appid了,這樣,就很方便的同步聯繫人等信息到模擬器上了,以前要測試聯繫人相關的功能,還要自己一個個的新建,現在就方便多了

1552510-4b5ba470fbe3f20c.png

還有,如果開啟了Photo的Share,那麼模擬器中應該也能同步照片過來了,以前那種一個個的導入圖片的方式終於可以說再見的時候了

模擬器現在可以任意的調整大小了,不得不說這個功能太酷了

登錄appid後,Files就可用了,可以瀏覽到你的iCloud Drive中的內容了,對於要共用文件到模擬器的需求來說,也變得超級方便

模擬器的外觀樣式也回歸了,直接是iPhone的外觀了,以前可能是因為模擬器不能任意調整大小,所以才沒外觀的吧

當然了,你可以去掉外觀皮膚. 在模擬器的Window show Device Bezels,去掉選項就和以前一樣了

1552510-abb189f895185f2b.png

10 無線開發

這個只支持ios11的機器,很簡單,只要在Device那打開支持就行.

11 Folder和Group的同步性

之前,我們在XCode中,更改Folder的名字,在FInder中工程對應的文件夾的名字並不會同步的改變,這會造成我們重命名文件夾變得非常不方便,往往要先在XCode中移除,然後在Finder中重命名,再添加回Xcode

現在 在Xcode9中重名命Folder,Finder中的也同步的改變了

我們之前建議一個虛擬的group,並不會在對應的文件夾中建立真實的目錄,當然,這可能是你需要的,也可能是你不需要的功能.在9中,預設行為改變了.變成了會建立對應的真實文件夾.如果還想像之前那樣只是建立虛擬的group,需要選擇New Group without Folder

1552510-2b6bca6fc6362ae0.png

你可能你會擔心,區分不了這個group到底是虛擬的,還是實際的

放心,蘋果給出了標識來區分的,虛擬的左下角有個小的三角形

1552510-a22e1dfba9139a4c.png

當你移動一個Group的時候(虛擬的實際的都一樣),它會同步的把對應的真實文件夾也移動到對應的位置,這個極大的方便了我們後期調整工程的目錄結構,之前調整那才叫痛苦,在工程中調整了後,工程中的結構和真實的文件夾下的對應不上,以後不會出現這種情況了

這裡發現XCode9的一個文件同步的bug

如圖,我們建立的工程如下

其中 xuni這個是一個虛擬目錄

1552510-f4177e88db7ff02e.png

這個時候,如果我們將整個 xuni移動到Views下,

1552510-0228d76194caabbb.png

可以看到,xcode出問題了,本來我只是將xuni移動到Views下,可現在 真個的View1都移動了,導致SecondView消失了....

希望蘋果在下個版本中能解決這個問題

其實從上面來看,建立實際目錄更不容易出問題,可能這也是蘋果將New Group的預設行為改為建立對應的實際文件夾了吧

不常用的更新

Server & Bots

現在XCode內置了一個XCode Serever用於 持續集成,因為很少用到,也就不展開了

1552510-5e4a8b2316887ac3.png


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 2、TextView設置內容 使用方式: ...
  • WSKit 1.0 ...
  • 詳細見參考鏈接吧, 其他不多說了. 適配iOS11&iPhoneX的一些坑 http://www.cocoachina.com/ios/20170921/20623.html http://www.jianshu.com/p/26fc39135c34 http://www.jianshu.com/p ...
  • Apple Developer Program - 一年 $99 美元( ¥688 人民幣 ) - 此計劃讓您擁有發佈應用程式至 App Store 上進行發佈及銷售的許可權。 - 允許開發人員直接在綁定的 Apple 設備上安裝您的 app 以便測試。 - 可以邀請多達 2000 位 TestFli ...
  • For the most part iOS supports Right-to-Left (RTL) languages such as Arabic with minimal developer effort. Standard UIKit controls take care of switch ...
  • 維基百科將主頁定義為網站的初始頁或主要網頁。我想,“初始”和“主要”這兩個詞已經傳達了足夠的分量。然而現實情況卻往往差強人意,設計師想破腦袋也難以理解為何什麼用戶會毫無留念地離開,卻殊不知用戶在第一眼就已失去了興趣。設計師和用戶之間的橋梁似乎斷開了。本文中,我總結出了20個主頁設計實用技巧,助您打造 ...
  • iOS精選源碼 自定義視圖彈出實現方案 仿寫百思不得姐 ARKit,距離感應,AR尺子 iOS感測器集錦 AR太陽系,動畫與光線處理,ARKit iOS啟動頁廣告JYJAdViewController ThemeManager 是一個輕量級的主題管理庫,使用簡單方便無耦合 旋轉跑馬屏風動畫Donut ...
  • Android精選源碼 android仿美拍直播的點贊動畫 android視頻播放器完美切換全屏、小視窗源碼 android類似隨手記理財類源碼 android簡單瀏覽器源碼 android電動車項目源碼 android文件下載管理demo源碼 android錄音和播放的管理類源碼 android仿 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...