4 個月學習 iOS 開發的經驗 (0基礎到上架 App Store)
來自: http://www.cocoachina.com/programmer/20160219/15326.html
文章開頭先說下上架的這款 App 吧,趕在春節前收到了 Apple 的審核通過郵件,當時還是挺高興的,算是對自己4個月學習的肯定。開發這款 App 原因很簡單,只是因為自己經常忘記下雨拿傘。期間 UI 設計改了好多次,代碼也重寫了幾次,最后的成品基本滿足自己的心里預期,為了趕在春節前上架,有些 Bug 還沒有處理,1.1版本目前已經提交, UmbrellaWeather 這款 App 差不多長這樣:
我是從去年 9 月下旬開始學習 iOS 開發的,作為一個 0 基礎并且英語也不怎么好的人,學習編程首先當然就是興趣,因為自己已經在工作了,每天都是抽出空閑時間學習,從學習到第一款 App 上架 App Store 差不多4個月時間,這里我給出一些自己的學習過程和經驗
從 RAY 的第一個教程開始
tutorial1
我是從 RAY 的第一個開發 APP 的教程開始了我的學習,這個教程的第一個項目很簡單,代碼非常少,讓我對 iOS 開發有了基本的了解和認識,了解 Xcode 的使用,當然里面有些地方當時還不是很能理解,而且本來英語就不怎么好的我來說,看起來還是非常吃力的。在這個過程中,我既鍛煉了自己的英語水平,又對 iOS 的開發有了一個基本了解和認識,后面在圍繞著一些疑問學習,會起到很好的提高作用。
學習 Swift 語言
有了開發一款 APP 的學習經驗,在看 Swift 語言,很多地方都會有豁然開朗的感覺,我感覺這種方式是學習一個新知識最好的過程。Swift 語言建議細讀,并且配合 Xcode 的 Playground 全部敲一遍,盡量做到理解。對于 0 基礎的我來說,在學習 Swift 語言的時候,很多概念還是有些困惑。不過學習過程就是這樣,明白了一個知識點,馬上有新的知識點需要了解,就是這樣一個循序漸進的過程,在這個階段我對編程語言的字符串、變量和常量、集合類型、循環方式以及類和結構體等內容有了基本的認識。必須要說的是,Swift 語言是后面學習經常回頭看的內容,因為在后面的學習中,很多不明白的地方,結合當時的項目,馬上就能理解其中的含義,畢竟在項目里面的使用才是理解問題的最好方式。
網絡教程
網上免費的 iOS 開發教程還是挺多的,這個階段我主要是把 iOS 的一些基本框架了解了一下,首先當然是 UIKit 的學習,把系統的基礎組件都過了一遍,例如UIButton、UILabel、Storyboard 等等內容。第二階段學習了TableView、ScrollView 這兩個核心組件的基本使用,還有頁面傳值的方法 delegate、Storyboard.
這里再推薦一個國外免費 Swift 學習的網站,基本包括了所有常用組件和 API。
RAY 的剩余三個開發項目
tutorials
在有了前面組件和語言的學習,剩余三個項目的學習,就是融匯貫通的過程,因為前面只是學習了 <它是什么> 這里通過 RAY 的教程了解 <如何巧妙的運用到項目中> , RAY 的 iOS 開發教程都是從簡單的實現到巧妙的運用邏輯整理代碼的過程,這個過程可以很好的理解復雜邏輯和代碼的實現方式和使用方法還有編程的邏輯思維能力。
第一個項目讓我對 傳值 TableView 有了更深的理解。
第二個項目是對于 定位 SDK 的系統學習還有各種錯誤的處理方式和思路。
第三項目是網絡編程的學習,如何請求數據展現數據等。
這三個教程我做了很多筆記,可以說四個項目的開發學習主要就是讓我開始有編程的邏輯思維能力,這都是在學習的時候無形中提高的,這也是 RAY 的開發教程最大的財富所在,當然也大大提高了英語閱讀能力,雖然不能說有質的提高,至少是對 iOS 開發這塊的詞匯有了很深的記憶。
開發個人項目
在有了前面幾個項目的學習,我對 iOS 開發有了比較系統的了解,這個時候我開始了我的第一款 iOS 的開發。跟著別人學,和自己遇到困難想出解決方法并學習,這兩個學習方式還是很大區別的,第一個鍛煉自己解決問題的能力并且印象更加深刻,第二個,實踐出真知,許多知識點也只有你真正實踐過,才更加明白其中的含義。
在開發這款 App 的時候我用的最多的當然是 Google 和蘋果的官方文檔。必須要說的是,查詢資料不是查詢如何開發,而是在自己想到了點子的情況下,查詢代碼的實現方式,然后實現,在這個項目中我對 Swift 開發語言有了更深的了解,還有數據持久化存儲和網絡請求這一塊。
在實際開發過程中很多前面學習到的模糊概念這里得到修正,可能前面你以為理解了的東西,發現好像不對或者說有點問題,因為只有在實際項目中出現 Bug 或者沒有達到預期效果,你才會回頭思考這個知識點是不是原來的理解有誤區。
在這個項目中,我使用了第三方遠程推送,也學習了推送的注冊和使用,iOS 的后臺機制,Animation 的簡單使用,項目的發布過程和內購的實現等等,因為使用的是國內天氣 API 的免費服務,每天請求次數是有限制的,為了盡量減少用戶不必要的網絡請求次數,優化請求次數也下了不少功夫,設計 UI 還簡單學習了下 Sketch 這款軟件的使用,整個項目最大的進步應該是自學能力的提高吧!
下步計劃
在第一款 App 項目的審核階段,我已經開始了第二款 App 的開發工作,在項目的開發過程中,構思功能并且解決是學習 iOS 最好的方式,在接下來的學習計劃中,我準備把斯坦福的公開課視頻過一遍,研究學習透幾個 Swift 開源項目,這差不多是我后幾個月的學習規劃。
說說經驗
在學習前期,多看一些優秀的開發項目,是學習的最快和最有效的途徑。RAY 的這4個教程就起到這個作用,因為它會在教程中一步步告訴你實現的邏輯和方式,對于剛學習編程的人來說很好理解,如果對一些地方的實現方式有些困惑, Xcode 的 Playground 是最好的研究場所,沒事多在里面敲敲代碼,比什么都強,學習編程并不像其他東西那樣你掌握了1在學習2這樣一階一階學習進步的,很多時候,1可能你還沒能理解,在學習3或者4的時候才對1豁然開朗,不要因為某個知識點沒搞懂就感覺自己學不來喪失學習熱情,很多地方都是了解了面才掌握了點,盡量多用 Google 不要怕看英語,不要忽視了英語的學習,這個也是學習編程必須提高的東西。
學一個新東西不要一開始就設定一個很大的目標,那樣可能很容易放棄,設定一個個小目標,比如今天我要搞懂類是什么,明天我要了解下TableView ,這周我要了解UIKit基礎組件的使用,這個月我要開發出一個項目,這樣更能堅持和持續下去。
實踐出真知,實踐出真知,實踐出真知,重要的事情說三遍!
</div>