1. 程式人生 > >Swift語言指南

Swift語言指南

這份指南匯集了Swift語言主流學習資源,並以開發者的視角整理編排。

P.S. 考慮到本文件內專案收錄部分過於雜碎,因此,借2014年結束之季,額外整理了一份《Swift開源專案精選》,順帶短文一篇《致Swift開發者》,希望大家喜歡。

目錄

Swift文件

3. Using Swift with Cocoa and Objective-C

"值得一提的是,Swift部落格是蘋果官方網站的第一個blog,這也代表了蘋果對開發者和消費者的態度正變得越來越開放。"

6. iOS Human Interface Guidelines

Swift教程

1. 官方教程

  • Swift入門(視訊翻譯 By @趙哲A): A001.01, A001.02, A001.03, A001.04: WWDC 2014官方Session 402視訊翻譯。講得很細緻,口齒清晰,英語發音準確,聲音非常好聽。
  • Testing with Xcode: 本文的目的在於讓測試成為你軟體開發的重要組成部分,並使測試更方便並易於使用。

2. 快速入門

  • Swift Language FAQ: Raywenderlich的Swift語言FAQ說清楚了很多問題。這份FAQ確實淺顯易讀,初學者不可或缺好文章!
  • Strings in Swift:瞭解使用String的更高階技巧(尤其在Unicode的使用上)。文章中作者附上了示列程式碼在Playground專案中,似乎Swift開發者們已經慢慢地習慣了結合playground講授Swift使用小技巧及語言特性。
  • Objective-C開發者對Swift亮點的點評: 這篇譯文確實不錯,含括了常見的亮點。儘管對於Swift相較於Objective C的亮點描述還不夠全面,對初學者很受用。原文在此
  • 74個Swift標準庫 (譯文): Swift包含了74個內建函式,但在The Swift Programming Langage一書中只介紹了其中的7個,其它的都沒有在文件中體現。"文中作者沒有提及他是如何發現這麼多未在文件中體現的內建函式的,估計是反編譯的結果。我測試了好多個都能用,而且Xcode還會給出語法提示:)" by @李潔信
  • ochococo/Design-Patterns-In-Swift:這個專案分享了Swift程式設計中如何使用常用設計模式。作者提供的Playground示例及常用設計模式的簡單介紹。
  • NSHipster - WKWeb​View:"WKWebView 是現代 WebKit API 在 iOS 8 和 OS X Yosemite 應用中的核心部分。它代替了 UIKit 中的 UIWebView 和 AppKit 中的 WebView,提供了統一的跨雙平臺 API。" 作者:Mattt Thompson
  • Core Location in i​OS 8:有關iOS 8核心位置服務介紹。文章從許可權、室內位置跟蹤、CLVisit等角度做了較全面的介紹。
  • NSHipster - Apple Pay:繼上一期WatchKit後,本期NSHipster專欄給了Apple Pay。分別從以下幾個主題闡述:1. 獲得商戶ID;2. 開發第一個收費程式;3. PKPaymentAuthorizationViewControllerDelegate;4. 動態的物流方式及定價。

3. 教程精選

4. 開發技巧

  • 開發Yosemite幾個小技巧: "Apple 終於釋出了 Xcode 6.1,帶來了 Swift for OSX 等多個更新, 這幾天我簡單研究了下在 Yosemite 下實現一些新的小需求的方法, 這裡使用 Swift 語言描述總結一下。" 作者:@diumoo
  • 我在開發第一個Swift App過程中學到的四件事:"本文翻譯自raywenderlich.com,作者Greg Heo,是Razeware(Ray創辦的公司)的員工,這是他為講授iOS 8 App Extensions視訊教程而實際使用Swift開發了一款App的經驗,來看看他的心得體驗。" 譯者:@pockry
  • LTBouncyPlaceholder程式碼解讀: "我希望你已經下載了 LTBouncyPlaceholder 的 Demo ,用 Xcode 6 開啟並編譯、執行,然後在介面中顯示的幾個 UITextField 裡輸入一些文字來體驗這個擴充套件。看到 Placeholder 的動畫了嗎?" By nixzhu
  • Swift中下劃線的妙用: "在Swift中,下劃線有很多妙用,這裡將已經看到的妙用進行總結,希望可以幫助更多學習Swift的朋友。..." By @twlkyao
  • SwiftSingleton: 三種方法介紹了Swift中Singleton的寫法
  • 為大屏手機而設計:用了一個簡單例子講解了大屏手機基本的可操作性。總之,無論螢幕有多大,輕易放棄單手操作是不明智的。
  • 用Swift的函數語言程式設計解決硬幣問題:作者的演算法實現簡單又巧妙,關鍵是充分利用到了Swift語法的精妙之處。專案:ijoshsmith/break-a-dollar。"要破開一美元的方法一共有293種之多。也就是說,如果有人給你一美元換零錢,你可以給他293種不同的硬幣組合。第二天,我開始思考如何編寫程式碼來破開任意數量的金錢,本文總結了解開這個謎題的兩種實現方式。" 譯者:@pockry
  • 盤點開發者最喜愛的Swift技巧:文章首推Natasha The Robot博主Natasha Murashev獨門Swift祕籍,還有objc.io博主Chris Eidhof著力推薦的獨具特色的Swift版Quicksort,還有... 還是請同學們細細品讀文章吧。譯者:@唐門教主,原文:Favorite Swift Tips & Tricks of 2014
  • iOS二維碼掃描,你需要注意的兩件事:相對於ZBar或ZXing,AVFoundation無論在掃描靈敏度和效能上來說都是最優的,所以毫無疑問我們應該切換到AVFoundation,需要相容IOS6或之前的版本可以用zbar或zxing代替。

5. 相關文件

  • WWDC 2014
    • WWDC 2014釋出會(帶中文字幕): 有關Swift語言演講部分從103:54開始,首先蘋果iOS/OS X及公共平臺負責人克雷格·費德里吉(Craig Federighi)針對Xcode及Objective C的簡要回顧,克里斯·拉特納(Chris Lattner)上臺做Swift語言演示從107:15開始。
    • WWDC 2014 PDFs: 107個PDF壓縮包 By @清醒瘋子
  • Chris Lattner (譯文:Swift 程式語言首席架構師): "Chris Lattner(1978年出生)是 LLVM 專案的主要發起人與作者之一,Clang 編譯器的作者。他現在是蘋果公司『開發者工具』部門的主管,領導 Xcode、Instruments 和 編譯器團隊,從 2010 年 7 月開始主導" By 伯樂線上
  • 程式設計師眼中的蘋果Swift語言:簡單 易學 高效:“以下是記者準備的七個問題,涉及Swift的優點、缺點。以及Objective-C的結局。索菲斯的答案中有些會有點駭人、令人震驚,或許還有几絲傷感。“ 相關參考:知乎《如何評價 Swift 語言?》
  • 行走於 Swift 的世界中: 總結了一下近一週以來的一些覺得這個語言裡有意思的地方。By @onevcat
  • 和Swift親密接觸的這半個月:雖然學習能力及基礎不同,但這樣的學習體會及認識,至少能帶給初學愛好者以啟發![轉發] "未來 Swift 會發展的怎麼樣我無法預言,我是肯定會懷念這段時間和世界人民一起為 Swift 瘋狂的日子的。" By @圖拉鼎
  • 我不懂 Swift 語言: 能聽到不同的聲音是非常有益的,何況作者有些觀點很有建設性。比如:"Swift 仍舊在改變,它是 beta 版本,所以它肯定是能夠改變的。要知道如果你在它是 beta 版的時候還不提出問題,那麼如果你可能會需要很久時間才能讓它進行改進。"
  • 從Objective-C到Swift: "Swift背後的概念大多與Objective-C類似,但更為簡潔、自然,也吸收了很多其他語言的語法。本文將對Swift的語法、特點及改進進行全面介紹。" By 黃兢成
  • Swift の 函數語言程式設計: "Swift 相比原先的 Objective-C 最重要的優點之一,就是對函數語言程式設計提供了更好的支援。 Swift 提供了更多的語法糖和一些新特性來增強函數語言程式設計的能力,本文就在這方面進行一些討論。" By @diumoo
  • iOS介面開發的大一統: "簡單介紹了下 Size Classes 和 UIPresentationController 的內容。" By @onevcat
  • MVVM 介紹(譯者: @nixzhu,原文:Introduction to MVVM): MVVM相較於MVC未必更輕量化,不過它達成了View Controller的輕量化。介面層邏輯(View Model)的抽象,不僅有利於理清View/Controller邏輯的粘連不清,對於單元測度也更容易了。
  • Top 5 iOS 7 Animations: iOS 7 排名前5的動畫效果預覽。誰能解讀一下到這些動畫效果對應的程式庫、或找到對應或相近開原始碼分享嗎?(Swift版本更佳,OBJC也可以)
    • IFTTT/JazzHands: Flickr開始介面動畫類似效果,OBJC版本實現程式庫。
  • iOS 5+ 裝置一覽:作者的意圖是通過這樣一張直觀的圖,指導選擇相對合理的裝置組合進行開發和測試。PDF版本
  • 超越Objective-C,超越Swift:很有趣的作者,除了對Swift有比較專業地概括式理解,還從應用的緯度對新語言提出了自己的要求。比如:自動持久化,自動RESTful API,有表現力的觸發器和響應,所見即所得的UI編輯等。譯者:@pockry 原文:Beyond Objective-C, Beyond Swift
  • 設計師+Xcode:突破產品開發的流程界線:原文作者做為視覺設計師,講述了採用Interface Builder和Storyboard與開發小組協同工作的故事。雖然只是一個4人小團隊,但清晰的分工協作,使專案有序高效進展。Xcode也讓視覺設計師及UX設計師有機會分擔部分前端開發工作。來源:@BeForWeb 譯者: @C7210 原文: Blurring the lines between design and code
  • iOS設計指南(譯者:shengbanx):非官方文件,不過原文《The iOS Design Guidelines》遵循並基於《iOS Human Interface Guidelines》進行解讀介紹。非常值得收藏。原作者Ivo Mynttinen,是一位來自德國的年輕UI設計師。其個人部落格網站也值得同學們收錄:ivomynttinen.com
  • IBM Design Language:"Living LanguageA shared vocabulary for design。Explore the guidelines for making delightful products and enlightening experiences."
  • 怎樣在Xcode 6中使用向量圖形:"蘋果在Xcode 6當中給我們帶來了一些很棒的工具用以管理圖形資源,它們可以幫我們從容的應對未來的iOS裝置,例如基於PDF圖形檔案自動生成各種規格的圖片資源..." 來源:@BeForWeb 譯者: @C7210 原文:Using Vector Images in Xcode 6
  • 為什麼 iOS 開發不需要 Storyboard(譯者:@pockry,原文:The Story of no Storyboard in iOS Development):對於資深開發者或有程式碼"潔癖者",storyboard 或許會使其程式碼及配置相對臃腫或不必要的麻煩。即便如此,仍有使用程度及是否用好的問題。而對於大多數開發者,storyboard對於快速開發所帶來直接的價值不可抹滅。以及另一故事《設計師+Xcode:突破產品開發的流程界線》對於團隊協同開發帶來的積極影響。
  • 致 Swift 開發者:“自 2014 年 6 月蘋果釋出 Swift 以來,本微博通過跟蹤、歸納、彙總持續更新《Swift 語言指南》已經半年有餘。由於個人力量綿薄,充其量它能讓初學者快速索引到有用學習資源,而對於 Swift 進階開發者,顯然是遠遠不夠的...”
  • Swift開源專案精選:“站在個人的角度,將2014年Swift開源專案做了一個甄別、篩選。當然,由於個人能力及涉足範圍所限,還遠遠不夠,其中肯定有偏頗及不足,還望同學們多多見諒。更希望能得到你幫助和補充,共同參與。”

Swift專案

1. 實用類庫

  • 工具類

    • Dollar: 尤其在Array和Dictionary的支援上(實現類庫僅一個Dollar.swift檔案)。用過Javascript版的Lo-Dash或underscore就知道其實用程度。它是一套函式化程式設計的工具庫。另一個類似的更完整的版本是ExSwift,它的實現基於物件化擴充套件的。
    • ExSwift: 實用類擴充套件庫。另一個Lo-Dash或underscore的Swift版本實現,相對於Dollar.swift,此版本有更完整的API實現。包括了對Array, Int, String, Float, Range, Dictionary, NSArray的擴充套件及其它實用方法。完全遵循面向物件的擴充套件原則。
    • lingoer/SwiftyJSON:這是解析JSON字串封裝類。實現功能與Javascript中的JSON.parse相近,使用方便。By @lingoer
    • typelift/Basis:這個實用類庫支援範圍很寬範,封裝主要以簡化及方便呼叫系統API為主,使程式程式碼看上去更優雅。遺憾地是,目前作者並沒有提供API文件或示例程式碼,對於初學者使用會額外帶來一點點學習成本。
    • Ahmed-Ali/JSONExport:一款實用工 具,可以將JSON轉換並輸出為Swift語言類模型(也支援Android上的Java),支援簡單的定製。
    • hubertr/Swell: 同時支援Swift和OBJC的Log實用類。喜歡Log4j風格的日誌管理類的同學可以收入。
    • RSBarcodes_Swift: "RSBarcodes allows you to read 1D and 2D barcodes using metadata scanning capabilities introduced with iOS 7 and generate the same set of barcode images for displaying and sharing." By @yeahdongcn Swift語言版二維碼識別及生成類庫。
    • SwiftP2P/SwiftSSL:常用 Digest 和 HMAC 的封裝。如此封裝後,使用加密演算法確實很方便。很不錯的一個國產"輪子"!By @你全家都快到碗裡來
    • DaveWoodCom/XCGLogger : 這是一款功能比較健全日誌輸出框架(Log4Swift)。之前推薦過一款類似的 hubertr/Swell,但它的功能明顯沒有這款強大。
    • isair/JSONHelper :又一款JSON轉物件類庫,算上,lingoer/SwiftyJSON,owensd/json-swift,gfx/Swift-JsonSerializer,已經有四款了。同學們根據喜好及需求,擇優使用吧。
    • kylef/Stencil:通過在模板中支援if, for, ifnot 等語法標籤,實現更強大、更靈活的資料及格式輸出。
    • kylef/PathKit: 簡單、實用的檔案路徑操作類,常用功能一個也不少。
    • typelift/swiftz: 一個幫助實現函數語言程式設計的類庫,定義了一系列相應的資料結構。
    • dongri/OAuthSwift:Swift版OAuth(1/2)授權類庫。對於作者提供的API,看著舒服,用著方便。
    • p2/OAuth2:獨立又純粹的OAuth2認證授權類庫,作者所提供的示例及流程說明清晰又簡潔。
    • tadija/AEXML:簡單又易於使用的XML解析類。作者提供了完整的示例程式。
    • duemunk/Async:一個後臺執行程式碼封裝庫,它可以讓你的後臺程式碼封裝語法更簡潔。
    • ArtSabintsev/Siren:當應用更新時,通知使用者並提供App Store連結供使用者更新的開源庫。P.S. 該開發者也曾提供Objectvie-C語言版ArtSabintsev/Harpy
  • 圖片

    • kaishin/ImageScout:最小網路代價獲得圖片大小(寬和高)及型別,它對於很多場合,比如:佈局和排版都有積極作用。
    • kaishin/gifu:高效能GIF顯示類庫Swift版本。
    • indragiek/DominantColor:採用YUV色域編碼規則及K均值聚類演算法提取圖片代表色開源專案。很實用,很贊!
    • iSame7/Panoramic:該專案通過Core Motion實現了變換角度移動手機時,使圖片顯示產生對應位置及角度的變換。從而達到了具有現場感的圖片瀏覽功能。
    • gavinbunney/Toucan:小而美的圖片變換及處理類(支援:resize, clip, crop, scale, Ellipse Mask, Rounded Rect Mask, Image Mask)。功能略有超預期的感覺。
  • 儲存

    • SQLiteDB in Swift: "This is a basic SQLite wrapper for Swift. It is very simple at the moment and does not provide any advanced functionality. Additionally, it's not pure Swift at the moment due to some difficulties in making all of the necessary sqlite C API calls from Swift."
    • Realm - a mobile database: Realm主打移動資料庫。除了更輕量,甚至還可以應用到可穿戴。低耦、面向物件的設計風格也是非常亮麗的。
    • nerdyc/Squeal:一套非常完善的SQLite資料庫訪問API,無論建庫,建表,CRUD等常用資料庫操作命令都進行了很好的封裝,另外,版本管理、事務管理、併發管理、命令執行及Prepare Statement等都提供相應支援。它是一套不可多得的SQLite管理訪問庫。
    • Haneke/HanekeSwift:貌似這個輕量地帶快取圖片元件還不錯。主要功能包括圖片二級快取、非同步載入、後臺執行、自動縮放等。感興趣的同學可以試用一下。
    • SugarRecord/SugarRecord:相對於SQL,CoreData可以更方便、高效儲存資料,而SugarRecord類庫可以讓你更方便的使用CoreData,同時作者已經封裝好iCloud,使你的應用開發更如虎添翼。
    • michaelarmstrong/SuperRecord : Swift版CoreData框架擴充套件類庫。相對於同類型CoreData框架庫SugarRecord/SugarRecord http://t.cn/RhYLS4n ,SuperRecord要簡單、輕量得多。很棒的快速開發類庫。
    • aschuch/AwesomeCache:Swift語言寫的高效能快取物件儲存及管理,定義及使用簡單、易於理解。支援為每個Cache物件設定快取有效期。
    • daltoniam/Skeets:網路圖片的獲取、快取及顯示類庫,支援快取的清理及時效性管理。
    • evermeer/EVCloudKitDao:一套使用CloudKit簡單封裝庫。作者還提供了示例專案及程式供開發者參考使用。
  • 遠端訪問

    • lingoer/GRequest:"@李潔信:個人認為AFNetworking這種較重的第三方網路庫將逐漸淡出舞臺,而像樓主這種基於NSURLSession並充分利用Swift特性寫出來的小而美的庫會受到更多人的青睞!" 作者解讀《GRequest for HTTP Request》
    • daltoniam/SwiftHTTP: Thin wrapper around NSURLSession in swift. Simplifies HTTP requests.感興趣的可以看看程式碼,比較與lingoer/GRequest差別。
    • AshFurrow/Moya: 如果你需要如此功能的Swift網路API,可以考慮使用它。它基於Alamofire, swfitz等優秀開源類實現。
    • aleclarson/emitter-kit:用EmitterKit代替NSNotificationCenter。這個庫貌似短小、精悍、實用的樣子。更重要是語法精練。
    • daltoniam/starscream:Swift版本WebSocket客戶端類庫,支援iOS/OS X 。 使用方便,跨平臺開發不可或缺的"輪子"。
    • shuoli84/SocketIOCocoa:又一款WebSocket實用客戶端類庫,作者提供了詳細的測試用例可以做為示例程式碼使用。
    • marcelofabri/BigBrother:網路請求活動狀態監視器類。由於 Alamofire 庫並無此項特性,因此它可以做為 Alamofire 的一個擴充套件功能。
  • 框架

    • robb/Cartography: Set up your Auto Layout constraints declaratively. 這是有關自動佈局約束一個實用的Swift專案,程式碼看似簡單清晰,不過由於設計巧妙。程式碼解讀 By @kaiyuz
    • railsware/Sleipnir:一個基於Swift的行為驅動開發框架(BDD-style framework)。API安裝,示例及說明相對比較齊全。
    • Quick/Quick:另一款基於Swift的行為驅動開發框架。
    • inamiy/SwiftTask: 一個很標準的任務及其生命週期管理類庫。作者還附上了一個基於Alamofire庫完成的網路檔案下載的任務管理示例。
    • inamiy/SwiftState:Swift版本State Machine,這是SwiftTask的姐妹篇。開發過Workflow類應用的同學有沒有很親切。
    • colemancda/NetworkObjects:基於Swift的輕量版HttpServer框架,可以做為iOS/OS X分散式物件的替代。可惜缺少演示或示例程式碼。
    • Masonry/Snappy:一個基於AutoLayout封裝,語法簡潔的輕量級佈局框架。當然,用程式碼還是storyboard,全憑開發者喜好。若偏好視覺化自動佈局,@DevTalking 的兩篇譯文值得參考《Swift自適應佈局教程》《為iPhone6設計自適應佈局》
    • Quick/Nimble:功能更強於Xcode自帶測試框架(XCTest)的測試類庫。
    • nghialv/MaterialKit:Swift版Google Material Design元件庫。雖然個人並不推薦在iOS平臺上使用非iOS風格介面,不過,對於Android強迫症“患者”,多一種選擇也是友好的。順帶附上Google提供的開源Material Design圖示集,可以一起收入。
    • mutualmobile/MMWormhole:提供了iOS應用與擴充套件之間的訊息傳遞,其最有價值之處當屬iPhone與Watch間的訊息傳遞,從而實現相互操控的功能。
  • UI元件

    • jcavar/refresher:一個常用的下拉即重新整理列表工具類,提供開放介面定製重新整理動態變換效果。
    • ariok/BWWalkthrough:讓你的頁面切換動起來,示例效果槓槓的。作者還提供了比較完整的開發文件及示例解說。
    • vikmeup/SCLAlertView-Swift: 動畫效果彈出框封裝庫(管理於CocoaPods),使用也足夠方便。試著運行了一下,效果還不錯。
    • ortuman/SwiftForms:這個表單遞交庫簡單實用,支援主要資料型別及定製。快速開發利器。
    • coolbeet/CBStoreHouseRefreshControl:這個下拉重新整理庫,提供完全可定製進度變換效果,且極具藝術感。建議有能力的同學把Objective-C版本改寫為Swift版本。
    • codestergit/SweetAlert-iOS:該彈窗控制元件設計簡單直接,功能完整,動畫效果恰如其分。實在不可多得,必須收錄。
    • Ramotion/animated-tab-bar:一款靈動的動畫標籤欄類庫。可在storyboard中直接使用,非常方便。Demo效果非常漂亮。連續三天GitHub分類排名第一,且迅速過600星。它的程式碼並非複雜或特別,相信大家中意它的還是其設計感。
    • Ramotion/paper-switch:類庫實現了當Switch元件開/關切換時,平滑過渡到父檢視的變換效果功能(核心類繼承了UISwitch)。P.S. 該開發者也是這幾天熱門專案 Ramotion/animated-tab-bar 的作者。
    • cemolcay/ReorderableGridView:可以拖拽排列Grid框格的UI元件。功能說明完整,使用方便,應該是一個不錯的UI"輪子"。
    • zhxnlai/ZLBalancedFlowLayout:一個通過調整cell大小來利用空間的UICollectionViewFlowLayout子類。

2. 示例專案

  • 官方示例: "比起GitHub上的開源專案來說,官方的程式碼我覺得是更有參考價值的,比如Session 406的程式碼,Lister,就用一個Swift實現的包含OSX和iOS的" By @晨鈺Lancy
  • VirtualGS教程示例: 以下示例程式來源於林泰前老師微博部落格釋出,為方便大家學習Swift程式設計,有幸獲得林老師的准許在這裡釋出。
  • Easy-Cal-Swift: "實在忍不了Swift的數字計算時候的好麻煩的強制轉換了,過載了一下加減乘除之類的操作符,這樣就不用顯式地轉換型別了...(對於像我這樣現在連補全都沒有的孩子來說,能省好多時間啊- -)" By @onevcat
  • Swift版的知乎日報: 學習一門新語言,光看是沒有用的,想要快速的掌握它,就得投入到真實專案的開發中,仿照@YANGReal 的糗事百科,做了一個Swift版的知乎日報
  • Swift版PM2.5的例子: 一個很好的Swift與Objective C協同工作GitHub開源專案。用到的開源類庫有TFHpple: 以XPath方式解析HTML,SCLAlertView: 使用Swift寫的AlertView SVProgressHUD 進度條 By @熒星訴語
  • practicalswift/Pythonic.swift: 用Swift語言實現Python標準庫的一部分。然後,用Swift寫一段Python風格的程式,這是Python程式設計師想要的嗎?相信這不過是一個實驗,以此說明Swift語言的多變性、動態性的能力。
  • gemtot/iBeacon: Swift版iBeacon簡單專案(支援最新Beta 6編譯)。感興趣的同學可以學習一下。有關於Passbook應用及Passkit框架程式設計知識這裡有一篇網友較早釋出的《iOS 6 - PassKit程式設計指南》
  • evnaz/ENSwiftSideMenu:一個簡單的Slide側拉選單實現。使用很方便:sideMenu = SideMenu(sourceView: self.view, menuData: ["UIDynamics", "UIGestures", "UIBlurEffect"])
  • iluuu1994/Pathfinder:一個有趣的演算法類專案。雖然目前只是個演示專案,不過,作者有計劃加入更多演算法優化程式,同時,也有計劃支援3D地圖。
  • KhaosT/HomeKit-Demo :HomeKit演示專案,可以與HomeKit模擬器協同工作。由此進一步思考:HomeKit配合iBeacon、藍芽,甚至更具DIY潛力的樹莓派(Raspberry Pi)組成未來家居智控中心,這個方向上的開發潛力巨大。感興趣的同學可以關注一下。
  • vandadnp/iOS-8-Swift-Programming-Cookbook:來自《 O'Reilly's iOS 8 Swift Programming Cookbook》的配套示例。書買不買另說,如此即時、完整、豐富的新書示例專案真不多見。悟性好的同學,開發時參考一下示例是不是就不用買書了?
  • sxyx2008/FoodPin:如此完整的Swift示例專案,可以幫助學習到不少Swift程式設計技巧。"用Swift寫的一個功能比較完善的App,參照Beginning iOS 8 Programming with Swift一書。功能比較完善。AutoLayout、Core Animation、Core Data、國際化等。" By @熒星訴語
  • PhotoBrowser:"展示Instagram授權使用者釋出的照片的App,參考了Ray Wenderlich的Alamofire教程,還用了SwiftyJSON和FastImageCache。" By @Kyrrr

3. 完整專案

  • FlappySwift: 用Swift語言實現的 FlappyBird
  • 天氣預報iOS專案: 新介面還不錯,簡單,還帶點卡通的味道
  • tnantoka/edhita:edhita是一款用Swift重寫並完全開源的文字編輯器。AppStore上已經有更新版下載。試用後感覺還不錯。它甚至支援Markdown, HTML等檔案編輯後的預覽顯示。
  • jurre/TravisToday:一個功能相對完整的服務於Travis CI系統的OS X應用擴充套件Today專案案例。
  • stakes/Frameless:一款基於WKWebView的最小化全屏瀏覽器,主要功能是方便開發者採用HTML5做原型設計或App釋出。對於測試工程師或喜歡極簡、全屏瀏覽使用者,可以直接在AppStore下載使用。
  • mozilla/firefox-ios:Swift寫的iOS版Firefox。P.S. 第三方庫用到了Alamofire, Snappy, swift-json等,內建閱讀器還使用了Readability。
  • lexrus/VPNOn:一款駐在通知中心內的基於Today擴充套件的VPN開關應用。
  • victor/whereami:一款用Swift語言寫的通過命令列獲得當前裝置地理位置程式。雖然很簡單,不過,實用性及學習性俱佳。

3. 專案評測

  • 【Workflow 測評】Workflow 是款什麼軟體?(作者:@JailbreakHum):"除了聖誕降價以外最近最火的軟體話題應當是#Workflow#了。如果你沒接觸過此類軟體,或許會納悶它有何魅力。我們針對這款軟體的測評系列的第一篇就是來向你概述它是什麼軟體的,所以文中給出大多是基本知識,不過相信也會給老手一定的啟發。"

Swift網站

  • ksm/SwiftInFlux:作者(Karol Mazur)將Apple Developer Forums上有關Swift特性、缺陷及變更討論分類彙總並更新到Github,具有很好的可讀性。從中可以一窺Swift缺陷及未來潛在地變化。最關鍵地是有Chris Lattner及核心團隊答疑解惑。
  • raywenderlich.com(中文版): 由Ray Wenderlich建立,專注於開發高質量程式設計指南(近期優質Swift文章及視訊教程不斷),著名的iOS/OS X部落格及開發教程網站,非常適合新手學習。近期第一時間出了三本Swift新書
  • Natasha The Robot: 時髦碼農不容錯過的Swift開發實戰教程類網站。為了簡化學習複雜性,每一篇文章涵蓋技術點單一又獨立,配以開發步驟、執行結果以及程式碼等標準方式教授。難能可貴的是,它往往出品"追劇式"(最新開發特性或API跟進式)教程,實在是開發者必藏精品網站。
  • jamesonquave.com: 移動開發者,優秀個人部落格(近期文章同樣關注於Swift語言,寫得很優質)。同時他將於8/30釋出一本新書《Developing iOS 8 Apps in Swift》 (Learn To Make Real World iOS 8 Apps)及視訊教程。
  • objc.io(中譯版 By @onevcat 及其朋友們): "關於 Objective-C 最佳實踐和先進技術的期刊。 由 Chris Eidhof, Daniel Eggert 和 Florian Kugler 成立於柏林。我們成立 objc.io 的目的是針對深入的、跟所有 iOS 和 OS X 開發者相關的技術話題創造一個正式的平臺。“
  • iOSCreator:這類開發指引式教程對於初學者來講,是直接明瞭的有效學習資源。推薦者@熒星訴語
  • iOS Dev Weekly: 收錄一週以來iOS開發資訊連結,並於週五釋出。由Dave Verwer創辦,他是一位iPhone和iPad開發者以及培訓師。
  • devtalking.com: 高產的中譯部落格。翻譯了官方部落格Swift Blog - Apple Developer,《App Extension Programming Guide》。參與翻譯了《Swift Programming Language》等。

相關工具

1. 開發工具

  • Xcode 6 beta下載: 蘋果應用整合開發環境。支援C/C++, Objective C, Swift等。不用購買開發者計劃,直接下載。
  • Textmate:Mac OS X上一個可高度自定義的編輯器,尤其在我想做出一個快速改變但又不想等待Xcode載入的時候。該工具目前已經開源
  • Mou:OS X上一款Markdown的編輯器。非常適用於編寫自述檔案、變更日誌以及其他方面的內容。作者:羅晨
  • Sublime Text ($):Mac OS X上另一款非常受歡迎的輕量級,可高度自定義的編輯器。
  • RunSwift:正在猶豫是否入手蘋果電腦開始一段Swift程式設計旅程的同學們,或僅僅為了試驗一段簡單Swift程式碼又懶得開啟Xcode,可以試試這款Web版Swift編譯環境RunSwift。
  • InfinitApps - Bezel:“嫌 Xcode 6 目前提供的 Watch 模擬器不夠直觀?Bezel 是一個用於視覺預覽 WatchKit 所開發程式效果的小工具,前提是你安裝了 xScope 軟體(Mac端)或 xScopeMirror(iPhone端)。 By @WatchKit開發

2. 程式碼管理

  • GitHub:聲望日盛的資源分享之地。
  • GitHub for Mac:一個設計的非常美觀的git客戶端,不能取代你從命令列獲得的所有功能,但使用起來非常簡單。
  • GitCafe:GitCafe is a source code hosting service based on version control system Git。國內的程式碼託管服務,基於 Git,值得一提的是最近也推出了和 GitHub Pages 類似的服務 Gitcafe Pages。因為是在國內,所以相比較 GitHub 有速度優勢,在網路環境差的情況下也許可以作為 GitHub 的備用。
  • Bitbucket:國外的程式碼託管服務,不同於 GitHub 的是,Bitbucket 可以免費建立 private 專案。
  • Git:分散式版本控制系統和原始碼管理系統,其優點是:快和簡單易用。對於新手來說,可在此檢視免費電子書籍。

3. Xcode外掛

  • CocoaPods:第三方庫的管理利器,允許你簡單地把第三方庫整合進自己的應用中。對我個人來說,我基本上每個專案都使用CocoaPods。
  • CocoaPods Xcode Plugin:一款Xcode外掛,允許你直接從Xcode管理CocoaPod依賴。

4. 管理工具

  • HomeBrew:OS X上非常出色的包管理工具。
  • Transmit ($):一個Mac OS X 上FTP客戶端,有著非常漂亮的使用者介面和有用的功能。

5. 除錯工具

6. 參考文章

  • iOS開發工具: "這是我們多篇iOS開發工具系列篇中的一篇,此前的文章比如:那些不能錯過的Xcode外掛,iOS開發者有價值的工具集,iOS/OS X開發:各種工具快到碗裡來!,App原型設計工具使用心得(上)& App原型設計工具使用心得(下),你用哪種工具進行iOS app自動化功能測試?,iOS 開發者必知的 75 個工具" By @CocoaChina

開放平臺

開放平臺相對於Swift語言更具戰略意義,這是開發者不得不面對的挑戰。也是蘋果新一代創新應用的催化劑。通過Extension達成應用之間的協同及通訊,這是對生態內應用開放的基礎。讓我更期待的是,Extension在Safari Action上實現及支援,這是實現平臺開放及跨平臺應用最簡單直接的方案。

1. 文件

  • 談談 iOS 8 和 OS X 10.10 的 Extension: "我個人認為這是 iOS 和 OS X 發展至今非常具有里程碑意義的一處改進,甚至比 UI 上的改變重要的多。我想簡單地談一下為何 Extensions 這麼重要。" By @圖拉鼎
  • App Extensions學習筆記: "系統中支援extension的區域,extension的類別也是據此區分的,iOS上共有Today,Share,Action,Photo,Editing,Storage Provider,Custom keyboard幾種,其中Today中的extension又被稱為widget" By @foogry
  • 蘋果iBeacon讓智慧家居走進現實: "iBeacon最初發布的時候是一個協議,蘋果希望利用這一協議取代NFC技術。iBeacon技術則可以利用支援該技術的裝置建立一個訊號區域,相當於實現了地理圍欄的功能,當其他支援iBeacon技術的裝置如手機進入這一區域時,對應的應用程式就會自動連線這一區域的訊號網路,或者對使用者進行提示"
  • Android L/iOS8/WP8.1到底誰抄了誰?: "我們發現在三場釋出會上都聽到了觀眾這樣的聲音:“無恥抄襲!抄了誰誰誰的!!”,這種事情似乎說也說不清,所以我們決定把這三個新系統放到一起來看看,然後再下結論。"
  • Google開源字型Noto Sans CJK簡介(By @洋氣書生): 這篇Noto Sans CJK(CJK: Chinese, Japan, Korean)字型普及文章簡單、直接、專業,且易於理解。作者友善地提供了一份本地下載,贊一個!P.S. 毫無疑問,新版Android上會很快支援,iOS/Mac/Windows上也會盡快預設支援嗎?
  • Web Apps:這篇新鮮文章較全面論述了Native應用和Web應用。有關Native應用和Web應用,最近爭論漸少,原因應該有兩點:1. 無論Apple還是Google,Native應用才是其生態的基礎,過於激進推動,將損害其固有商業利益。而微軟的話語權嚴重受阻於移動系統的發展;2. 基於Web View的混合應用基本滿足應用跨平臺性 。
  • Back to Mac - XPC by objc.io: XPC 是 OS X 下的一種 IPC (程序間通訊) 技術, 它實現了許可權隔離, 使得 App Sandbox 更加完備。
  • MATERIAL DESIGN設計規範學習心得:“編者按:自學筆記就該這麼做!今天分享@東門王三 同學關於Material Design的自學成果,他的學習筆記嚴謹有序,觸類旁通,從Material Design到其他系統的設計規範都有所研究,還認真地做了思維導圖,同學們可以邊學習邊借鑑他的自學方法,一舉兩得呦。By @優秀網頁設計

2. 示例專案

3. 實用資源

  • google/material-design-icons :對於喜歡 Material Design風格的同學,這是難得好資源。Google提供了極為完整的各種圖示(包含iOS各種精度及SVG)設計資源。

媒體文章

  • WWDC 2014給開發者帶來了什麼?: "蘋果向第三方開發者開放了大量的可呼叫特性和4000個新API——指紋識別、雲端儲存、智慧家居平臺、相機控制、健康資料平臺、3D圖形API、對iOS 8可擴充套件程式的呼叫,以及新的程式語言Swift。PingWest製作了一種資訊圖帶你一覽這些新特性"
  • 程式語言進化鏈的頂端:為什麼說Swift正在顛覆整個網際網路生態?(36Kr): "Swift 代表的程式猿先進生產力的發展要求(提高程式設計效率),代表了計算機先進文化的發展方向(語法簡潔,現代),代表了廣大人民的根本利益(寫起來爽,學起來快)。"
  • 蘋果程式語言Swift解析:將推動應用開發鉅變(CNET): "如果程式語言更加易學易用,那麼應用開發的門檻將會降低,導致更多新手開發者參與這一行業。"
  • 外媒評論:蘋果公司Swift語言將改變一切: 美國財經網站Motley Fool針對Swift比較中性的一篇評論文章,因此目標讀者是非技術人員,可讀性還不錯。
  • 蘋果新貴 Swift 之前世今生(池建強): 這篇文章故事性很強,不過,的確把前世今生、來龍去脈交待了一遍,適合剛開始瞭解swift語言的程式設計師。
  • WWDC 2014: 給第三方開發者的情書(Qdaily 李如一): "iOS 和 Mac 上的御用語言 Objective-C 可以追溯至 NeXT 時代,換言之,它已經有超過二十年的歷史。Swift 作為蘋果發明的程式語言,也繼承了蘋果產品的傳統"
  • 蘋果釋出Xcode 6 Beta 3,Swift迎來重大更新!:"蘋果在面向開發者推送iOS 8 Beta 3以及OS X Yosemite的第三個預覽版的同時,也釋出了全新的Xcode 6 Beta 3,並對Swift語言進行了大幅改進。新版Swift修正了許多開發者提出的請求,尤其是對陣列進行了重新設計。" 作者:@唐門教主 擴充套件閱讀《Swift 在 Beta3 中的變化》
  • Swift中文翻譯組: 近30人9天協作完成翻譯近670頁的英文文件
    1. 協同寫作的力量——中國開發者9天完成《Swift語言》中文版: "詳細介紹了GitHub上開源翻譯《Swift語言》這個開完專案,發起者是一個90後的大學生,整個翻譯團隊在9天內完成了近670頁的Swift語言文件翻譯工作。" By 36Kr
    2. 翻譯暫時告一段落 寫點感想吧 : "現在翻譯已經告一段落,感覺這段時間的效率真是高的可怕,也許是因為一種成就感,或許帶了那麼一點功利心(我想每個人或多或少的都會有一點吧)。" By @CoverXiT
    3. Apple的Swift語言: "哥也無意中在Github上看到這個翻譯專案,並有幸參與了翻譯,算是親身體驗了一把多人協作的開源專案,感覺很贊也很有成就感……" By @TimothyYe
    4. 雨燕Swift: "...我做翻譯這件事的目的其實挺自私的,沒想改變世界,沒想著跟世界同步,沒想幹什麼轟轟烈烈的大事。... 我是Aminby,和大多數程式設計師一樣默默無聞地用國內外先進的技術或解決方案為工作忙活著的普通人。" By @老白經aminby
  • 蒂姆·庫克的蘋果: "當庫克走向舞臺左側的暗處時,氣氛一時變得神祕起來。這時蘋果軟體工程負責人克萊格·費德里西(Craig Federighi)快步走上臺。他和庫克插肩而過,走到聚光燈下,向大家介紹這款新品。它不是一款新的消費產品,而是一套名為“開發工具包”的軟體工具,可以幫助開發人員開發出更好的應用。這個世界上的其他人可能會對此打哈欠,但開發者們站起身,興奮地叫嚷起來。"
  • 蘋果 A8X 晶片難逢敵手!英特爾、高通、三星紛紛落敗:回想當年喬布斯團隊從iPad開始,毅然選擇自己設計基於ARM架構的A4晶片,無論在iPhone/iPad系列產品快速演變還是商業上,都獲得了罕見的收穫。從CPU革命延伸到如今開發語言Swift,奠定了其龐大生態環境內基礎軟、硬體堅實的基礎。未來的蘋果顯然更值得期待。
  • 新視訊透露了蘋果都不知道的iPhone隱藏技能:"iPhone的效能和擴充套件是否已經超乎蘋果的想象?近日國外網友 Ivo Leko 利用iPhone上多項感測器用於完成實時的磁鐵位置追蹤演示。"

WatchKit確定了開發者在第一代Apple Watch能做什麼,顯然,這只是一個保守的開始。

1. 文件

3. Watch教程

  • 快速入門
    • Apple WatchKit 初探:"隨著今天凌晨 Apple 釋出了第一版的 Watch Kit 的 API,對於開發者來說,這款新裝置的一些更詳細的資訊也算是逐漸浮出水面。可以說第一版的 WatchKit 開放的功能總體還是令人滿意的。Apple 在承諾逐漸開放的方向上繼續前進。By @onevcat"
    • RayWenderlich - WatchKit初探(譯者:@DevTalking,原文:WatchKit Initial Impressions):"Raywenderlich對WatchKit第一版的評價:1.不簡單的只是App extension;2.Watch負責檢視,iPhone執行控制器和模型;3.新的layout方式;4.強大的快覽和通知;5.動畫不原生支援。By @WatchKit開發"。
    • Apple Watch 開發者套件 WatchKit 釋出後,你需要知道這些:"Apple 上線了供 Apple Watch 開發者使用的開發工具 WatchKit。從這款工具和相關文件中,The Verge 發現了一些重要細節。By @36氪"
    • Mattt Thompson - WatchKit(譯文):官方開發資源(尤其『視訊Getting Started』,文件《Apple Watch人機互動指南》和《WatchKit程式設計指南》,以及「示例程式碼」)毫無意外做為文章優先推薦。當然,做為經驗豐富的開發者,他還額外給出了WatchKit和UIKit驚人相似的對照表及核心API說明。原文:Watch​Kit,來源:@慕課網iOS學習小組

4. Watch專案