如何成為一名入門級 iOS 開發者
來自: http://swift.gg/2016/02/15/how-to-become-a-developer-1/
作者:Weston Hanners, 原文鏈接 ,原文日期:2016-01-26
譯者: ray16897188 ;校對:   ;定稿: 小鍋
</div>
</div>
最近我一直在幫我的幾個朋友開始學習 iOS 開發,然后被問到一個開始學習需要的清單。聽起來很適合為此寫一篇博客。閑話少說,我給你列出來要成為一名入門級的 iOS 開發者必須掌握的知識清單(不分先后順序)。
基本的 CS 知識
我不覺得投身開發移動應用必須得有一個計算機科學的博士學位,我認為這應該歸為“加分項”那一欄,但是對數據結構和算法有一定基本的了解肯定會防止開發新手們寫代碼把自己寫到死胡同里去。所以對新手來說,我推薦你們去看 油Tube上的哈佛CS50課程 ,把它看做是你入門的開始,這些課程淺顯易懂,還十分有意思。
Swift 還是 Objective-C
還是那個觀點,你無需到達能夠寫這兩種語言的技術性博客的水平,或者是到能夠教課的程度,但是你還是至少得能用這兩種中其一來編程,不用過于頻繁的查看語法。API是另外一碼事兒,尤其是在 iOS 中,框架每年更新,很多方法也經常被棄用。對我來說大多數工作時間開一個 Safari 頁面去看 Apple 的文檔并不是偶然的事情。嘗試著記著所有的太讓人厭煩了。要讓你自己達到在沒有幫助的情況下可以寫類、結構體、循環、函數(類和實例)、分配變量、表達式求值的水平。
目前我們正處于一個比較奇怪的時段,這個時候招只會 Objective-C 的人還是能被接受的。Swift 還是很新,除非你進的公司里有頻繁的項目更替,否則你就得基本上用 Objective-C。也就是說,有很多的公司正決定轉向 Swift(我的公司就是),如果你就會 Swift 的話,找一個工作也不會特別難。重要的是要對你所選擇的那個語言足夠熟練,然后至少對另外一個也要熟悉到能讀懂代碼的程度。
框架和 API
還是和我之前說過的道理類似,我不認為你必須能對所有的 iOS API 倒背如流,但是你需要清晰的知道到哪里找起。
- UIKit (UITableView, UIButton, UINavigationController, GestureRecognizers)
- Interface Builder (Storyboards, Segues, and the odd .xib)
- Foundation 類型 (NSArray, NSDictionary, NSString) 以及它們的 Swift 對應 (Array, Dictionary 和 String)HTTP API (NSURLSession, 基本的 REST API 概念, 用 NSJSONSerializatio n 做 JSON 解析)
- Grand Central Dispatch (GCD, NSOperationQueue)
- 數據持久化 (NSCoding, NSUserDefaults, CoreData)
- 內存管理 (什么是循環引用,以及 ARC 的基本原理)
開發中的設計模式
模式很重要,它讓你的開發變得容易、代碼變得清晰。要確保你了解基本的設計模式,這些模式在 iOS 的框架中被廣泛使用,你在不知道它們的情況下不大可能做出來很多東西(還有很多其他模式,但是你可以隨做隨學)。
- 代理模式(大多數iOS API的主要模式,你 必須 理解掌握它)
- 模型-視圖-控制器模式(MVC,我并不覺得 Apple 在鼓勵使用最佳 MVC 分離上做的很好,但是它也是個很重要的設計模式,如果你花時間將其合理實現的話它能幫你改進你的代碼。還有,可以十分肯定的是:關于 MVC 的問題肯定會出現在任何一個 iOS 工作的面試題里。)
- 繼承(幾乎所有用戶界面的代碼都會是某個類的子類。)
- 單例模式(絕對會被濫用的模式…保守點兒用吧。)
熟悉開發環境
這似乎是顯而易見的,但如果你還沒有一臺 Mac 的話,弄一臺!如果你沒有任何一個 iOS 設備,弄一個!如果你沒有使用過或者不熟悉設備的話,為它做開發會很難。類似的是,如果你沒 Mac 寫代碼的話也很難。我是在2009年從一臺 MacBook 13’’ 和第一代 iPod Touch 開始的 。用低配置的設備也是能湊合的。當時是接近$1500的投資,但是長遠來看絕對值得的。
UX/UI
通常來說 UX(用戶體驗)和 UI(交互界面)是由設計師負責的,但是你也應該了解 Apple 的人機交互指南 。你應該要了解 mockups(譯者注:原型設計工具)和 wireframes(譯者注:線上原型設計工具)的區別,以及在開發的過程中如何使用它們。
工具
你應該熟悉一些常見的開發工具。
- Xcode(廢話)
- Git 版本控制(一些公司可能會用 Subversion 或者 Mercurial,但是 git 把你領進門應該是足夠的。)
- JIRA 或者 Bugzilla(基本就是 JIRA,你也是不需要成為使用它的專家,但是你應該至少把它玩個大概,第一次看見它界面的時候別怕)
- CocoaPods(這是管理依賴性和第三方代碼的工具,我還沒聽過哪個公司不用它)
見解
對 iOS,Swift 或甚至對某個 API 有你自己的見解能特別有效的讓面試官知道你對某個知識點的了解到底有多深。這還會讓我們能看到你的熱情。如果你參加一個面試被問到“你覺得 Swift 如何?”,回答“我覺得,還行吧”可不是正確的答案,你可以告訴他們你對 optionals 的看法,你有多喜歡某個 feature。這里不會有太多錯誤的答案,重要的是你得有東西可說。
作品集
事實勝于雄辯。如果你想在面試中表現優異的話,可以把一些簡單 app 合在一起(或者更好的是把它們發布在 AppStore 上)。展示出你能夠獨立完成一個項目的能力。我怎么推薦這點都不嫌多。GitHub 也很好,但是如果你選擇這條路,面試官想測試一下你的代碼的話,要盡可能讓它能夠輕松通過編譯。
我寫了篇文章介紹怎樣做一個應用程序,可以點擊 這里 看看。
結論
如果你還需要更多的入門資源,請查看我的 iOS Developer Resources 頁面,里面我附了我開始做開發的時候覺得有用的博客和網頁。
我想我要說的最后一件事就是JUST DO IT!現階段對 iOS 開發者的需求量還是很大的,如果你想達到一個不錯的技術水準,努力工作一點時間是必不可少的。這是一份有回報性的工作,能夠鍛煉你的工程技能和創造力。
我漏掉了什么了嗎?請在 推ter (@WestonHanners) 上告訴我。我想把這篇文章做成新手開啟他們事業所需的百科全書
另外說一下我所在的公司現在招所有技術水平的 iOS 開發者,如果你感興趣的話點擊下面的鏈接。
告訴他們你是從我這里知道他們的。
- 2016-01-26 更新:添加內存管理,UI/UX,MVC。添加工具小節。
- 2016-01-27 更新:布局調整。
本文由 SwiftGG 翻譯組翻譯,已經獲得作者翻譯授權,最新文章請訪問http://swift.gg。
</ul> </div>