Xcode 7新特性

Xcode 7 最新特性

本文主要翻譯自蘋果文檔, 但不和原文完全一致.
蘋果原文連接

Swift 2.0

Swift 2.0
Swift 2.0

Swift 2.0 改進很大, 尤其是在現(xiàn)代化, 強大, 表達力, 易用性方面. 相比 Swift 1.2的新的特性有:

  • 錯誤處理
    現(xiàn)在Swift開始使用throw, catch來處理errors, 也就是高級語言中常見的異常處理機制, OC, Java, C#, C++等早已實現(xiàn). Swift 2.0 的錯誤處理機制和原有的NSError錯誤處理方式保持了無縫銜接.
  • 版本可用性檢查
    版本可用性 幫助開發(fā)者檢查API在要發(fā)布的OS版本上是否可用. 假設(shè)你的發(fā)布目標(biāo)是支持iOS7及以后的系統(tǒng), 如果代碼中使用了一個iOS8中才有的方法, 在編譯時, 現(xiàn)在Xcode就會提示錯誤. 另外也可以標(biāo)記開發(fā)者自己寫的方法在哪個版本的OS上可用.
    以前要達到類似的目的, 開發(fā)者需要自己去判斷系統(tǒng)版本, 判斷API在某個版本的iOS上是否可用, 現(xiàn)在蘋果給出了官方解決方案.
  • 可測試性
    有了可測試性, 在單元測試的時候, 可以在測試中調(diào)用非公有的方法.
  • 協(xié)議擴展
    協(xié)議現(xiàn)在可以通過擴展增加方法和屬性, 以前只有類和結(jié)構(gòu)體可以擴展.
  • Swift 1.2 to 2.0 遷移
    Xcode7 可以協(xié)助將Swift 1.2的代碼高效的遷移到Swift 2.0, 包括projects和playgrounds的代碼.
    Swift代碼遷移
    Swift代碼遷移

詳情參見: The Swift Programming Language

Objective-C 語言

為了能夠和Swift無縫的高效的結(jié)合, Objective-C進行了更新. 最新的特征包括:

  • 泛型
    因為Swift中集合的元素都是有類型的, 為了和Swift更好的兼容, 新版本里, OC開始支持泛型, 主要是在各種集合類型(比如數(shù)組, 集合, 字典)中使用.
  • 可空性標(biāo)注
    因為Swift的代碼里面的主要類型默認(rèn)是沒有空值一說的, 只有可選類型才可以為空. 為了和Swift更好的結(jié)合, Objective-C中也加入了 可空性標(biāo)注 , 可以標(biāo)注是否期望一個值是否可空.
  • Kind-Of.
    通過使用 __kindof 聲明某對象是某種類型, 讓編譯器知道對象是某種類型或者該類型的子類, 可以用在泛型參數(shù)里. 使用 __kindof 對類型進行約束, 比指定某種類型或者id類型更靈活一些.

詳情參見: Using Swift with Cocoa and Objective-C

操場(Playgrounds)

操場
操場

Xcode6中引入的 操場 , 是一個探索和實驗Swift代碼的好地方. 在Swift 2.0里, 你可以使用操場來協(xié)助解釋怎么使用一個API, 或者示范一個概念.

  • 操場寫作
    Swift代碼里現(xiàn)在允許使用mardown來創(chuàng)建富文本的注釋, 更多參見: Playground Reference
  • 行內(nèi)結(jié)果
    以前每行代碼的執(zhí)行結(jié)果顯示在timeline區(qū)域, 現(xiàn)在可以把結(jié)果的顯示移動到該行代碼的下面, 這樣看起來會更清晰. 行內(nèi)結(jié)果結(jié)果的可配置性比在timeline區(qū)域更好.
  • 資源
    現(xiàn)在可以方便的把圖片, 音頻等資源方便的加入到操場中使用.
  • 輔助源碼
    輔助源碼功能, 可以讓你吧一些輔助的代碼從操場中移出去. 這樣操場里的信息看起來就更清晰了. 另外輔助源碼會處于被編譯完成的狀態(tài), 實時解釋的只有操場中的代碼, 這樣運行起來會快很多.
  • 操場分頁
    在Xcode7里面, 可以在一個操場里面包含多個頁面, 這樣方便你把相關(guān)的概念綁到一起.

詳情參見: Playground Help

App瘦身

Xcode 7現(xiàn)在可以開發(fā)多達3個平臺(我理解是指手表, iphone, ipad三個, 不包括mac電腦)上的應(yīng)用, 設(shè)備種類也很多. 不同的設(shè)備其容量和屏幕分辨率等規(guī)格各不相同. 針對同一個APP, 利用Xcode7和 iTunes App Store, 你可以為每種設(shè)備進行優(yōu)化, 該設(shè)備上用不到的圖片等資源, 就不下載到設(shè)備上.

  • Bitcode
    在應(yīng)用打包傳到App Store的時候, Xcode會把應(yīng)用編譯成一種中間代碼bitcode(不是二進制的可執(zhí)行代碼). App Store會按照需要將bitecode編譯成64位或者32位的可執(zhí)行代碼.
  • 切片
    放在AssetCatalog里的圖片, 可以通過打上標(biāo)簽, 讓不同的設(shè)備在下載app的時候, 選擇該設(shè)備需要的圖片.
  • 按需資源
    在app下載安裝完成之后, app store可以存儲一些額外的資源. 這些資源可以打上標(biāo)簽, 按照一定的策略和控制進行下載.

詳情參見: On-Demand Resources Guide

詳情參見: App Thinning (iOS, watchOS)in the App Distribution Guide for detailed information.

調(diào)試

為了幫助開發(fā)者開發(fā)出更好的app, Xcode 7 增加了新的調(diào)試和程序分析特性

  • iOS電量儀器
    Xcode 7 提供了電量儀器, 幫助你測量你的iOS app 使用的電量. iOS 9 加入了基于每個進程跟蹤電量的能力, 可以生成電量報表. 這是一種檢測你的app對電量影響的很棒的方法. 你可以看到app的異常行為, 例如在你的app本該空閑的時候出現(xiàn)了大量的電量消耗.

詳情參見: Energy Efficiency Guide for iOS Apps.

在app運行的時候, 調(diào)試測量儀器和他們的報告提供了一種快捷的視圖. 如果需要更詳細的信息, 每份報告都提供一個方式來啟動Instruments來加載你的app. Instruments的界面重新進行了設(shè)計,界面交互變得更簡單, 更自然. 比如加入了捏合縮放手勢, 讓在數(shù)據(jù)間導(dǎo)航更順暢.

詳情參見: Instruments User Guide.

  • 地址消毒劑
    Xcode7能夠在編譯應(yīng)用時加入地址消毒劑, 用以幫助捕獲和調(diào)試內(nèi)存沖突. 堆棧緩沖溢出, 野指針等內(nèi)存沖突導(dǎo)致的崩潰Objective-C和C代碼很容易產(chǎn)生. 內(nèi)存問題可能導(dǎo)致app崩潰, 也可能讓app發(fā)生詭異的行為. 由于難以復(fù)現(xiàn), 并且bug現(xiàn)象和源頭可能相距很遠(比如登陸功能有野指針可能導(dǎo)致商品的名稱顯示不正常), 內(nèi)存問題很難追蹤.
    在build scheme里面啟用地址消毒劑, 你就可以在發(fā)生問題的時候定位內(nèi)存地址. Xcode同時也會提供諸如地址和對象的關(guān)系, 對象分配和回收的信息, 從而幫助你定位和解決為題. 地址消毒劑的性能很好. 支持模擬器和真實設(shè)備, 支持iOS和 OS X.

測試

Xcode 7里面, XCTest框架加入了一個主打的特性: UI testing. UI testing以XCTest現(xiàn)存的API和概念的一個擴展的方式實現(xiàn), 已經(jīng)熟悉Xcode的測試功能的開發(fā)者很容易上手.

  • UI 錄制
    UI test方法可以通過錄制UI交互操作的方式創(chuàng)建. 當(dāng)用戶和應(yīng)用交互的時候, Xcode在你的測試方法里面注入代碼, 這些代碼找到你app的UI元素, 訪問他們的屬性, 調(diào)用他們的事件.
  • 正確性和性能
    XCTest現(xiàn)在為定位UI元素, 訪問元素的屬性, 調(diào)用事件提供了豐富的特性. 在UITest中, assert, 性能監(jiān)視等同樣支持.
  • 代碼覆蓋率
    在scheme里啟用代碼覆蓋率功能, 就可以對代碼覆蓋率進行可視化. 在測試報告里可以看到哪個文件里的哪個函數(shù)的哪行代碼是執(zhí)行了還是沒執(zhí)行.代碼編輯器也可以顯示代碼的覆蓋率信息, 讓你看到在一此測試中哪行代碼執(zhí)行了, 哪行代碼沒執(zhí)行.
  • Xcode Server.
    Xcode的測試功能已經(jīng)和Xcode Server完整的集成. 在Xcode Server上你在一個hands-off(放手, 類似于騎自行車大撒把)的環(huán)境里, 在多個設(shè)備上執(zhí)行測試, 反復(fù)的執(zhí)行, 統(tǒng)一和更好的評估app的正確性和性能. 新的Xcode Server 報表格式會顯示一個項目中的趨勢, 回歸反復(fù)進行的測試.

詳情參見: Testing with Xcode

免費得設(shè)備調(diào)試

  • 在你自己的設(shè)備上開發(fā)
    在Xcode7里面, 不再需要購買開發(fā)者以及進行繁瑣的設(shè)置, 你就可以在任意的設(shè)備上進行開發(fā)和調(diào)試了. 只需要注冊一個Apple Id.

詳情參見: Launching Your App on Devices

崩潰日志

之前的Xcode為iOS和watchOS提供了分析和使用crash數(shù)據(jù)的方法. 現(xiàn)在, Xcode 7里面, OS X app也支持這個功能了.

  • Test Flight.
    Test Flight支持
  • 崩潰報告
    Xcode 7提供了更好的查看和使用崩潰報告的功能.

詳情參見: Analyzing Crash Reports

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末东羹,一起剝皮案震驚了整個濱河市弱睦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌垒拢,老刑警劉巖火惊,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件屹耐,死亡現(xiàn)場離奇詭異,居然都是意外死亡寿弱,警方通過查閱死者的電腦和手機按灶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進店門鸯旁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人艇挨,你說我怎么就攤上這事韭赘∪埃” “怎么了?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵鸠删,是天一觀的道長贼陶。 經(jīng)常有香客問我巧娱,道長禁添,這世上最難降的妖魔是什么桨踪? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任锻离,我火速辦了婚禮,結(jié)果婚禮上卫键,老公的妹妹穿的比我還像新娘虱朵。我一直安慰自己,他們只是感情好絮宁,可當(dāng)我...
    茶點故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布绍昂。 她就那樣靜靜地躺著蚯涮,像睡著了一般卖陵。 火紅的嫁衣襯著肌膚如雪泪蔫。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天铣揉,我揣著相機與錄音餐曹,去河邊找鬼。 笑死朽合,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的宪彩。 我是一名探鬼主播讲婚,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼筹麸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了芜辕?” 一聲冷哼從身側(cè)響起块差,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤憨闰,失蹤者是張志新(化名)和其女友劉穎鹉动,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泽示,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡械筛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年埋哟,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片闯狱。...
    茶點故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡哄孤,死狀恐怖吹截,靈堂內(nèi)的尸體忽然破棺而出朦肘,到底是詐尸還是另有隱情双饥,我是刑警寧澤咏花,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布昏翰,位于F島的核電站,受9級特大地震影響棚菊,放射性物質(zhì)發(fā)生泄漏统求。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一码邻、第九天 我趴在偏房一處隱蔽的房頂上張望折剃。 院中可真熱鬧,春花似錦像屋、人聲如沸怕犁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奏甫。三九已至,卻和暖如春凌受,著一層夾襖步出監(jiān)牢的瞬間阵子,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工胁艰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留款筑,地道東北人腾么。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像杈湾,于是被迫代替她去往敵國和親解虱。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,876評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫漆撞、插件殴泰、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,124評論 4 61
  • 攢了一周的作品于宙,一次性放上來,終于在今天收到了飛樂鳥的彩鉛紙悍汛,確實很光滑細膩捞魁,上色很不錯,終于不用忍受疊幾層色就起...
    紀(jì)小花閱讀 146評論 2 1
  • 今天后臺突然來了很多新讀者离咐,不明就里的wiwi和lulu谱俭,有點受寵若驚。但是: 我不問你從哪里來宵蛀,愿我們一起擁抱生...
    wiwiwiwi閱讀 241評論 0 0
  • 《焦點無處不在》 暑假昆著,我縣組織心理咨詢師培訓(xùn),兩天來學(xué)習(xí)體驗式團體沙盤技術(shù)术陶,授課老師提出了很多問題:團體沙盤游戲...
    涓涓細流_7589閱讀 112評論 0 0