最近找到了一份iOS開發的正式工做,因此想把本身學習iOS開發過程當中的經驗和心得寫出來,但願可以幫助那些努力但迷茫的初學者。html
2015年1月,我開始開發個人第一個iOS應用,這款APP從第一行代碼到蘋果App Store上架用了大概兩個月的時間,但總的時間跨度有接近4個月(春節期間停滯了一個多月,等待蘋果審覈10天)。APP上架後,我就開始投簡歷,並拿着個人APP去面試,很幸運地拿到了幾個還不錯的Offer,而後就挑了一個去上班了。面試
下面就是我自學iOS開發的一些經驗和心得。算法
這些是作iOS開發必需要有的,並且是一大筆錢,但不要怕花錢,由於這些都是值得的。若是可以學有所成,一兩個月的工資基本就回本了。就當是本身交的一筆「培訓費」吧。數據庫
若是你和我同樣是零基礎轉行iOS,那麼必定要有破釜沉舟的勇氣和決心,並作好打持久戰的心理準備。若是畏手畏腳、瞻前顧後,我勸你仍是想好了再來,省得浪費時間和金錢。我當初收入很低,是拿了3個月的工資買的Macbook,還每天擔憂丟了或者弄壞;後來學習到小有所成時毅然選擇了裸辭,孤身一人來到陌生的上海,通過2個月的待業狀態才找到工做。這一路走來都承受着巨大的精神壓力和物質壓力。編程
若是你是徹底的零基礎,我建議先要對編程有個基本的認識。建議從C語言入手,由於C語言比較簡潔易上手,而且和Objective-C很類似。設計模式
當對C語言有個大體的瞭解後,就能夠開始學習Objective-C了。微信
《Objective-C程序設計(第6版)》數據結構
注:這兩本內容都差很少,但《Objective-C基礎教程》寫的更好、更經典,建議以這本爲重點精讀。可是這本寫的比較籠統,難度稍高,因此若是遇到不懂的地方就看看《Objective-C程序設計》,這一本寫的簡單、詳細一些。多線程
面向對象編程的基礎知識。包括:面向對象與面向過程的區別、爲何要面向對象編程,類、對象、繼承、方法、屬性、接口等概念的理解與使用。
Foundation框架。主要是NSString類、NSArray類、NSDictionary類、NSNumber類、NSRange類的熟練運用。
內存管理MRC、ARC的原理,委託delegate、協議protocol、類別category、塊block的理解與使用。
有了Objective-C基礎,就能夠開始邊看公開課邊作APP了(我的以爲沒有OC基礎直接看這個會很吃力)。能夠加我微信17512010526
蘋果官方有個作iOS應用的教程——《立刻着手開發iOS應用程序(Start
Developing iOS Apps Today)》。強烈建議以這個Demo做爲你的第一個iOS應用,由於這個教程能讓你對一個iOS應用的搭建有個很是全面、細緻的認識。完成了這個Demo後,就能夠結合斯坦福公開課學到的東西建立屬於你本身的APP了。
2)UIKit的各類控件。特別是UITableView和UICollectionView必定要掌握,由於大部分的iOS應用都是由這兩種視圖搭建,吃透了它們那可玩的花樣就不少了,其樂無窮。
導航控制器UINavigationController和選項卡控制器UITabBarController。同上,這兩個控制器也是絕大多數iOS應用UI框架的根基,也是多個MVC協同工做的最典型例子。
場景切換的實現——Segue。熟練使用Segue很重要,由於一個應用通常都是各個界面輪流出現的,兩個界面之間怎樣實現跳轉、怎樣將一個界面的數據傳遞到下個界面,這都是實際開發中會遇到的問題。
Storyboard和AutoLayout的使用。這二者是一個應用的UI界面設計不可或缺的部分。
其它iOS高級編程。包括:數據存取CoreData/SQLite、多線程GCD、繪圖CoreGraphics、動畫CoreAnimation、網絡編程、手勢Gesture、多媒體AVFoundation等等,這些內容均可以實際用到時再深刻學習。
第三方庫的使用。參考:GitHub 上都有哪些值得關注學習的 iOS 開源項目? - 編程
學習編程,必定要勤於動手,看再多的書、再多的視頻,若是不動手敲代碼都是白搭。哪怕書上和視頻上的代碼你一行都看不懂,也要親手把代碼敲一遍、把Demo親自實現一遍,這很重要。編程是手敲會的,不是眼睛看會的。
學習iOS開發的過程當中,有遇到不懂是正常的,別懼怕不懂,Cocoa的內容細節原本就多,每一年的WWDC還會發布一些新技術。因此遇到不懂的知識必定要學會查蘋果官方API文檔:iOS Dev Center
作APP時,若是一個地方不會實現,或者遇到解決不了的問題,必定要學會使用Google搜索。通常來講,初學iOS遇到的問題,Stack Overflow上都有相似的提問,基本一搜一個準。
此外,CSDN等一些技術博客上的文章也頗有參考價值。同時,加羣交流學習也是一個很不錯的選擇,在這裏我推薦一個羣能夠先加我好友:17512010526
若是你能按照以上所述作出一個APP上架並找到工做,那也基本算是入門了。但這並非終點,這只是一個新的起點。iOS開發,乃至整個計算機/互聯網行業,後面的路還很漫長。蘋果的整個Cocoa框架,可謂是博大精深,裏面能夠深挖的東西太多了;並且一個程序、一段代碼能夠進行的優化是沒有止境的。做爲開發者,只會一門語言是不夠的,網絡編程、數據庫、算法、設計、交互等等東西都是須要掌握的,而語言只是實現這些的工具,語言實際上是最簡單的。
此外,若是你和我同樣是非科班出身,還須要把計算機基礎課程補回來,即:數據結構、算法、操做系統、數據庫、計算機網絡、編譯原理等。由於這些知識是你的「內功」,這些基礎直接決定了你在這個領域的天花板所在的位置。
固然,基礎差一點也問題不大,最重要的是你對計算機、互聯網的熱愛和熱情。你須要有很強的自學能力,不斷地去學習新知識,纔不會被這個突飛猛進的行業淘汰;你須要保持一顆好奇心,不斷地嘗試和接受新事物,不斷地創新,守舊的人在這個行業沒法生存。在我找工做的過程當中,那些知名的大公司都是直接在簡歷關就將我刷掉了,而那些給我Offer的公司,無一例外都表示,之因此選擇我是由於欣賞的個人熱情、看重個人自學能力。
因此,若是你和我同樣對iOS開發充滿熱情,勇於接受挑戰,那麼就從如今開始努力吧,我在前方的路上等你!
給你們推薦一個優秀的iOS交流平臺,平臺裏的夥伴們都是很是優秀的iOS開發人員,咱們專一於技術的分享與技巧的交流,你們能夠在平臺上討論技術,交流學習。歡迎你們的加入(想要進入的可加小編微信)。 17512010526
連接:www.jianshu.com/p/89c4da115…來源:簡書