我是題主,感謝各位答主的答案,感謝各位知友的鼓勵,時隔半年,我已成功轉行網際網路,今天我就自己來回答一下這個問題。
最近我找到了一份iOS開發的正式工作,所以想把自己學習iOS開發的經驗和心得寫出來,希望能夠幫到那些努力但迷茫的初學者。
首先介紹一下自己的背景,我大學學的是機械專業,與計算機有關的課程只有一門C語言。
在接觸iOS開發之前,我已經在一家機械製造公司工作一年多,工作內容與計算機毫無關係,所以我屬於零基礎轉行。
2014年10月,出於對機械行業的失望和對網際網路行業的濃厚興趣,我萌發了轉行的念頭。
於是開始利用下班時間自學計算機知識(Java、Python、數據結構與算法)。學了大概兩個月,基本的東西有了大致的了解,但是感覺要熟練掌握還任重道遠。由於時間的原因,我就將重心轉移到iOS開發上面。
2015年1月,我開始開發我的第一個iOS應用,這款APP從第一行代碼到蘋果App Store上架用了大概兩個月的時間,但總的時間跨度有接近4個月(春節期間停滯了一個多月,等待蘋果審核10天)。
APP上架後,我即開始投簡歷,並拿著我的APP去面試,很幸運地拿到了幾個還不錯的Offer,然後挑了一個去上班了。
下面就是我自學iOS開發的一些經驗和心得。
一、準備工作
1. Mac、iOS設備、開發者帳號
這些是做iOS開發必須要有的,而且是一大筆錢,但不要怕花錢,因為這些都是值得的。如果能夠學有所成,一兩個月的工資基本可以回本,就當是自己交的一筆「培訓費」吧。
2. 心態上的準備
如果你和我一樣是零基礎轉行iOS,那麼一定要有破釜沉舟的勇氣和決心,並做好打持久戰的心理準備。如果畏手畏腳、瞻前顧後,我勸你還是想好了再來,免得浪費時間和金錢。
我當初收入很低,拿了3個月的工資買的Macbook,天天擔心丟了、壞了。學習到小有所成時毅然決定裸辭,孤身一人來到陌生的上海,經過2個月的待業狀態才找到工作。這一路走來都承受著巨大的精神壓力和物質壓力。
二、學習路線
1. 對編程的基本認識
如果你是完全的零基礎,我建議先要對編程有個基本的認識。建議從C語言入手,因為C語言比較簡潔易上手,並且和Objective-C很相似。
2. Objective-C語言學習
當對C語言有個大致的了解後,就可以開始學習Objective-C了。
推薦書籍:《Objective-C基礎教程》《Objective-C程序設計》
註:
這兩本內容差不多,但《Objective-C基礎教程》更好、更經典,建議以這本為重點精讀。只是這本比較籠統,難度稍高,所以如果遇到不懂的地方就看看《Objective-C程序設計》,這一本簡單、詳細一些。
需要掌握並熟練運用的地方:
a.面向對象編程的基礎知識。包括:面向對象與面向過程的區別、為什麼要面向對象編程,類、對象、繼承、方法、屬性、接口等概念的理解與使用。b.Foundation框架。主要是NSString類、NSArray類、NSDictionary類、NSNumber類、NSRange類的熟練運用。c.內存管理MRC、ARC的原理,委託delegate、協議protocol、類別category、塊block的理解與使用。
3. iOS SDK/Cocoa Touch學習
有了Objective-C基礎,就可以開始邊看斯坦福公開課邊做APP了(個人覺得沒有OC基礎直接看這個會很吃力)。
第一個iOS應用:
蘋果官方有個做iOS應用的教程——《馬上著手開發iOS應用程式(Start Developing iOS Apps Today)》。
強烈建議以此Demo作為你的第一個iOS應用,因為該教程能讓你對一個iOS應用的搭建有個非常全面、細緻的認識。完成了這個Demo後,就可以結合斯坦福公開課學到的東西創建屬於你自己的APP了。
需要掌握的地方:
a.MVC設計模式。只有理解了iOS的MVC架構,才能把一個應用解剖成一個個單獨的部分,這樣你在開始做一個項目的時候才不會茫無頭緒。b.UIKit的各種控制項。特別是UITableView和UICollectionView一定要掌握,因為大部分的iOS應用都是由這兩種視圖搭建,吃透了它們那可玩的花樣就很多了,其樂無窮。c.導航控制器UINavigationController和選項卡控制器UITabBarController。同上,這兩個控制器也是絕大多數iOS應用UI框架的根基,也是多個MVC協同工作的最典型例子。d.場景切換的實現——Segue。熟練使用Segue很重要,因為一個應用一般都是各個界面輪流出現的,兩個界面之間怎樣實現跳轉、怎樣將一個界面的數據傳遞到下個界面,這都是實際開發中會遇到的問題。e.Storyboard和AutoLayout的使用。這兩者是一個應用的UI界面設計不可或缺的部分。f.其它iOS高級編程。包括:數據存取CoreData/SQLite、多線程GCD、繪圖CoreGraphics、動畫CoreAnimation、網絡編程、手勢Gesture、多媒體AVFoundation等等,這些內容都可以實際用到時再深入學習。g.第三方庫的使用。參考:GitHub 上都有哪些值得關注學習的 iOS 開源項目? - 編程
4. 堅持寫代碼、查文檔、讀技術博客
學習編程,一定要勤於動手,看再多的書、再多的視頻,如果不動手敲代碼都是白搭。哪怕書上和視頻上的代碼你一行都看不懂,也要親手把代碼敲一遍、把Demo親自實現一遍,這很重要。
編程是手敲會的,不是眼睛看會的。
學習iOS開發的過程中,有遇到不懂是正常的,別害怕不懂,Cocoa的內容細節本來就多,每年的WWDC還會發布一些新技術。所以遇到不懂的知識一定要學會查蘋果官方API文檔——iOS Dev Center
做APP時,如果一個地方不會實現,或者遇到解決不了的問題,一定要學會使用Google搜索。一般來說,初學iOS遇到的問題,Stack Overflow上都有類似的提問,基本一搜一個準。
此外,CSDN等一些技術博客上的文章也很有參考價值。推薦一些優秀的iOS技術博客——中文 iOS/Mac 開發博客列表:tangqiaoboy/iOSBlogCN · GitHub
三、最真摯的建議
如果你能按照以上所述做出一個APP上架並找到工作,那也基本算是入門了。但這並不是終點,而是一個起點。
iOS開發,乃至整個IT行業,後面的路還很漫長。蘋果的整個Cocoa框架,可謂是博大精深,裡面可以深挖的東西太多了;而且一個程序、一段代碼可以進行的優化是沒有止境的。
作為開發者,只會一門語言是不夠的,網絡編程、資料庫、算法、設計、交互等等東西都是需要掌握的,而語言只是實現這些的工具,語言其實是最簡單的。
此外,如果你和我一樣是非科班出身,還需要把計算機基礎課程補回來,即:
數據結構、算法、作業系統、資料庫、計算機網絡、編譯原理等。
因為這些知識是你的「內功」,這些基礎直接決定了你在這個領域的天花板所在的位置。
當然,基礎差一點問題也不大,最重要的是你對計算機、網際網路的熱愛和熱情。你需要有很強的自學能力,不斷地去學習新知識,才不會被這個日新月異的行業淘汰;你需要保持一顆好奇心,不斷地嘗試和接受新事物,不斷地創新;守舊的人在這個行業無法生存。
在我找工作的過程中,那些知名的大公司都是直接在簡歷關就將我刷掉了,而那些給我Offer的公司,無一例外都表示,之所以選擇我是因為欣賞的我的熱情、看重我的自學能力。
所以,如果你和我一樣對iOS開發充滿熱情,敢於接受挑戰,那麼就從現在開始努力吧,我在前方的路上等你!
本文來源知乎,由公眾號「IT實訓指南」整理,請勿擅自複製、轉載。如需轉載,可聯繫原作者授權。
部分圖片來源於網絡,如有侵權請聯繫作者刪除。
非科班出身怎樣才能學好編程??零基礎學IT真的能高薪就業?請移步訓哥兒gongzhong號:IT實訓指南(ITSXZN)查看詳細分析。回復「教程」,免費獲取Java、Python、C/C++、Web前端、PHP、大數據等學習資料。
訓哥兒,IT培訓過來人,兩年IT培訓行業從業經驗。因:
看不慣IT培訓行業的亂象;
看不慣某些機構只為賺錢,不為學生的態度;
不想看到單純的學生被忽悠;
不想看到培訓後學生找不到工作;
不想看到IT培訓成為騙子的代名詞。
遂脫離了IT培訓行業,開啟了講真話的徵程,幫助同學們防坑防騙防套路,關於IT培訓,訓哥兒只講真話。