我在開發第一個Swift App過程當中學到的四件事

本文轉載至 http://www.itjhwd.com/wzkfyigeswiftsjs/


譯者注:本文做者Greg Heo,這是他爲講授iOS 8 App Extensions視頻教程而實際使用Swift開發了一款App的經驗,來看看他的心得體驗。html

這個夏天個人app開發項目是Instant Poetry 2,它本來是Ray仍是獨立iOS開發者時編寫的一個應用,如今我須要用Swift和iOS 8 API將它整個重寫一遍。swift

對我來講這是一次豐富的學習體驗 – 不但深刻學習Swift和iOS 8的複雜細節,還思考了在將來如何更好的將這些經驗傳授給別人。數組

這裏我就將在開發第一個Swift app過程當中學到的四件事,分享給你們。app

4) Swift仍然在演變當中工具

在整個夏天,Swift語言自己有了很多變化。我開始編寫app時使用的Swift版本是beta 3,而每一次Xcode版本升級都帶來語法變化和Cocoa方法簽名的微調。post

我在開發第一個Swift App過程當中學到的四件事 - 第1張  | IT江湖

 

若是你計劃使用Swift開發應用,你須要花精力關注這些變化並跟上Swift演進的步伐。性能

不過我認爲這種精力花費的值得。使用最新和最好的工具是很重要的,另外關注語言的演變自己也將成爲很好的學習經驗。蘋果一直關注和傾聽來自開發者對於Swift的反饋和問題報告,因此你甚至有機會參與到這個語言成型的進程當中。學習

3) Swift暴露出Cocoa不太好的一面spa

你是否指望獲取一個包含多個SKProduct對象的Swift數組?抱歉,Cocoa將返回給你包含AnyObject的隱式解析可選類型的數組(implicitly unwrapped optional array)。code

你是否想傳遞一個[NSObject: AnyObject]類型的Swift數組給對應的方法?抱歉,Cocoa真正想要的是一個NSDictionary,或者一個會致使靜默失效(silently fail)的東西。

你可以感受到Swift和Cocoa之間的緊張氣氛:Swift想要作某件事,但它不得不爲了適應Cocoa而作折衷。咱們必須面對這樣一個事實,從Swift透鏡來看Cocoa並不老是漂亮的!

 

我在開發第一個Swift App過程當中學到的四件事 - 第2張  | IT江湖

 

這裏有一個壞消息和一個好消息。

壞消息是咱們正處在一個過渡當中,蘋果在每次Swift/Xcode升級中所作的一部分事情,就是清理Swift-Cocoa的接口,來讓它們更好的兼容。

好消息是蘋果很善於過渡,你能夠回想一下從PowerPC到Intel處理器的過渡、經典Mac OS到OS X的過渡等等。將來的某一天,Cocoa也將會原生的完美支持Swift語言。

2) Swift和Objective-C是幸福的一對

真的,這是我以前觀點的一個必然推論 – 你可能覺察到Swift某些地方挺怪異,是由於它須要在Objective-C runtime和Objective-C API下工做,因此只能作出妥協。

 

 

 

我在開發第一個Swift App過程當中學到的四件事 - 第3張  | IT江湖

 

 

從實際開發來看,在個人Swift app裏使用Objective-C第三方類庫和擴展很是簡單,我只須要將它們的頭文件導入到個人bridging header,它們就能正常工做了。

若是你有一個喜歡的庫是用Objective-C編寫的,或者已有的app,你想要在它們當中添加一兩個Swift類,這不是個什麼大問題。

1) Swift很是好玩

我很享受和Swift一塊兒玩耍工做的日子。

它極富表現力。像自判斷連接(optional chaining)和nil coalescing特性能讓你寫出更短的代碼。讓我最驚訝的是枚舉類型給我帶來的享受 – 它的確是一個共贏,讓你代碼更具可讀性,還包括附加的好處好比類型檢查和實例窮舉檢查。

 

 

我在開發第一個Swift App過程當中學到的四件事 - 第4張  | IT江湖

 

做爲Objective-C和Ruby的粉絲,我以爲Swift就像集合了這兩種語言優勢的混血兒。若是你學過Objective-C和Cocoa,閱讀起Swift代碼將沒有任何困難,若是你尚未開始學習,那麼就從如今開始用Swift開發一個簡單的應用吧!

附加感覺:Extension將改變世界!

至少對於蘋果的世界是這樣。在iOS 8裏,蘋果引入了app extension,容許開發者經過app擴展實現自定義分享選項、通知、鍵盤以及照片。

在Instant Poetry 2裏,我使用了一個Photo Extension,讓用戶可以直接在Photo應用裏添加詞句到圖片上。在這iOS 8之前是不可能作到的。

 

 

我在開發第一個Swift App過程當中學到的四件事 - 第5張  | IT江湖

 

應用們今後再也不被侷限在本身的sandbox裏了,貌似新的開放的蘋果將讓app可以從更多的地方作更多的事情,這是多麼美好的事啊。

即使是即將到來的Apple Watch,它也是iPhone屏幕的一個擴展,我等不及想知道咱們到底能用Watch Kit來作些什麼。

也許我下個Swift app將是和Apple Watch有關呢!~

那麼將來將是什麼樣的?

個人預測是,Swift的一些粗糙的地方將在短期內被反覆打磨。很快,Swift開發的應用將會無處不在,而且在Github上,Swift項目將遠遠超過Objective-C。

不過若是你如今開始開發Swift應用的話,你將會面臨一些挑戰。因爲Swift的快速演變,我認爲Swift 1.0項目遷移到Swift 2.0須要作很多工做,雖然比起從Objective-C遷移到Swift確定要輕鬆一些。

不過這也正是咱們熱愛科技的緣由,不是嗎?學習新知識、跟上潮流、使用最新最好的語言和API,這些能讓我保持興奮。

 

 

我在開發第一個Swift App過程當中學到的四件事 - 第6張  | IT江湖

 

最後,若是你想看看Instant Poetry 2能作什麼,你能夠從App Store免費下載。

你是否已經開始你的Swift開發旅程呢?若是是的話,我想聽聽你的體驗見解。

 

原文:Four Things I Learned Making My First Swift App 譯文:cocoachina

 

IT江湖 swift專欄

相關文章
相關標籤/搜索