iOS 開發入門需要學習哪些知識,從一無所知到精通需要多長時間?


多說無益,怒以身犯險,親身示範!
無基礎文科生入門iOS的3個月(以第一個app上線作為入門標準)


這個經歷主要是分享給一些像我這樣,對互聯網想法多多,按耐不住非得親自上陣的楞頭青。這裡以上線一個app為目標(不奢望做出啥高級演算法,90%的app也不會涉及演算法),當第一個app完成,基本上就不會再對開發有恐懼,之後盡情學習,享受創造規則的快感吧!
也有其他大牛們說上網搜索自己學入門超快的,我覺得身為一個無背景的文科生,還是有點吃力的。腦子裡沒有知識的框架,學到個知識點都不知道往哪裡整。所以還是推薦從書或者公開課入門。有個老師帶入門總是容易理解些的。

第一步:編程入門課
時間預計:4個星期
推薦看公開課,Udacity也行,網易公開課也行,自己找一個面對對象語言(一般是JAVA,
C++,
Python)的課。我是在網易公開課看的斯坦福的CS106A,學的JAVA。
如果你純粹學iOS開發,不推薦看哈佛CS50,CS50是給CS系的學生介紹整個計算機世界的框架,講的內容比較多,進度比較快,對iOS開發其實有點累贅了。(臣妾有點跟不上啊!!)
計劃安排是一天一課,看課程要求的書(至少看完一本)及大部分作業。這一階段重點不是語法,而是以下3個目標。
目標:
1.
讓自己對編程這件事感到適應。
寫hello
world。
怎麼寫function,
怎麼調用function。
全局變數,局部變數這類基本知識點。
都是基本的東西。看看書,寫多兩個程序就歐啦。

2.
掌握編程語言的基本要素。
編程語言4個要素:
a.
基本的數據類型:整數,實數,character,
string, boolean
b.
基本的運算符號:+-×/&>&<++--那啥的
c.
怎樣輸入輸出
d.
怎樣控制程序:sequence,selection,loop

3.
了解編程範式
面對過程編程。
面向對象編程。

第二步:上手iOS!
時間預計:2星期
強烈推薦CS193P,老頭子講的超級好!我的很多東西(對象思維啥的)是在這裡跟著做練習的時候才真正明白的(好啦,也可能是上一堂課練習做得少的原因)。如果等到9月應該itunes
U上會開始教iOS
7了。網易公開課的是2010年iOS
5版的,前10堂課,也行。(iTunes U上有完整的課)
CS193P說有prerequisite,一開始被嚇到,事實證明還是可以學下去的。頭兩節課一頭霧水,沒關係,把itunes
U上的課件下載下來,把所有代碼打出來,然後一個個元素對應之前學的語言匹配,再不懂先放著,繼續學後邊的,過幾天打多點代碼就懂了。
感覺學5、6堂課,一個星期左右就可以開始進入下一階段自己做東西了。之後用啥學啥,每堂課都有主題的。速度慢點的同學們,這階段跟我一樣準備兩個星期吧!

第三步:開發app!
時間預計:2星期(本人...1個半月,實在不好意思說出口)
這個時間就可長可短啦,還包括美工,交互啥的。堅持要用啥學啥的原則,其實就是知道iOS
SDK都有什麼組件,每個組件有什麼function而已。stackoverflow,
Github, apple sample code多上,搜索引擎多用。如果有個師傅,這個階段真的是進步神速。

好的!不出意外,你的第一個app就這麼新鮮出爐了!從今天開始,成為一個冷艷逼格高尚的iOS開發者吧!

======================================================================
這種學習開發方法弊端是基礎不牢,後期提高需要自己重新補上C知識,畢竟Objective是基於C的語言。
但優勢也是相當明顯的,就是快速消除文科生對編程的恐懼!對於常規的,C
→ C++ →Objective
C這樣扎紮實實,動輒半年熟練掌握一個語言的緩慢進程,一想到就悲從中來,讓想學習開發的大部分人第一步都不敢邁出。

經驗純粹由一個剛入門可能還全身bug的菜鳥分享給連門都還沒入的菜鳥們,有錯誤的地方,請各位高手指正,讓更多人能學會編程,享受創造產品的樂趣!


兩個月前連 OC 都不會。這個月18號提交了 APP Store,這周二審核被拒,原因是在 iPad 上有閃退。不知道 iPhone 應用也要在 iPad 上測試。又提交了一次。第二個應用預計下周末提交。第二個應用相對簡單一些。

起因應該算是從今年 WWDC 發布 swift,之後幾天看了 swift,於是就無知的萌生了搞 iOS 開發。上了 apple 的 "賊船",結果發現不學 OC 完全不行,現有的各種資料讓你不得不去學 OC。

還有一部分原因是感覺 iOS 上的應用實在太贊了,用 Android 的時候沒什麼特殊的感覺,應用就是應用,iOS 的感覺應用就是個藝術品,精贊,讓你不得不佩服。尤其吸引我的是各種動畫效果。有時候感覺看的心都酥了。今晚花了點時間整理了下我收集的 github 上iOS 動畫效果 。有興趣的可以看這裡 jackyzh/awesome-ios-animation · GitHub .

正好假期沒什麼事情,就開始天天學,天天寫,看過一點點斯坦福的那個視頻,覺得太慢了,也沒找到特別適合的書,因為更新太快有的教程教你操作 Xcode3 4 時候連個按鈕都找不到就很崩潰。

後來找到了 iOS 7 的教程 在這裡 iOS 7 App Development Essentials 就跟著大概過了一遍。當然我感覺第一個應用用不到的就不看了。只是為了入門。

看來大概一個星期就開始寫,邊學邊寫,基本上靠 Google 和 StackOverFlow 寫完的,比如要修改 navigation bar 的顏色,就 Google custom navigation bar 或者 navigationbar color , 百分之九十九的問題都能通過這兩個途徑解決。之前試著連續登錄 StackOverFlow 以拿到 Enthusiast 的 Badge 無果,這些天不用刻意登錄都拿到了。。其次是藉助 github 上的開源項目。以及 code4app 上看別人是怎麼寫的。

兩個月下來感覺 iOS 入門還是相對困難的,cocoa touch 的內容太多了,即便是有兩年開發經驗的也會有沒聽說過的功能。

回到正題,iOS 入門需要哪些知識,其實並沒有什麼,當然有 C/C++ 的經驗以及面向對象和設計模式的思想絕對有優勢,但沒有也不是不可以,不要考慮太多,直接上手,項目驅動,一定會經歷一段很艱難,感覺什麼都特別困難的時期,多 Google 入門了就好說了~ 至於入門需要多長時間,這個要因人而異了,不過要熟悉,至少也得大半年,甚至更久。每年的 WWDC 還會給你新的東西去學。

另外,Dash - Documentation Browser, Snippet Manager 用於查文檔提高不少效率,寫 iOS 文檔還是最靠譜的,apple 也提供了一些例子。可以參考。

共勉~


可以參考一下我在這裡的回答:http://www.zhihu.com/question/20314153/answer/14722141
從無知到精通,至少需要1年的項目開發才行。
也要看精通的定義了,如果是大多數iOS API都要了解並理得清的話,需要至少1年。
你是文科生,不知道是否邏輯能力也夠強呢?我老婆是文科生,邏輯不太強,現在在學iOS開發,進度很慢……

----引用以前的回答----
我一般推薦直接從以下幾個地方下手,而不要看那種成系列的教學視頻或書,那些學起來太慢了,鑽在一大堆細節里會拔不出來的…

  • 先確定一個小目標,讓自己寫一個小軟體來學習iOS開發
  • Obj-C語法簡述 http://cocoadevcentral.com/d/learn_objectivec
  • Obj-C語法詳述 http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/ObjectiveC
  • http://CocoaChina.com論壇上學習別人的範例、提問和回答等
  • http://GitHub.com上找一些感興趣的範例或開源代碼研究
  • http://StackOverflow.com上找自己問題的答案
  • 看WWDC的Kick Off視頻,縱觀了解一下目前iOS有哪些功能

多寫,照抄也行。大量閱讀源碼和蘋果文檔。

推薦到iOS Code Hub網站(http://www.ioscodehub.com),上面收集了很多開源APP.


文科生不文科生並不重要,重要的是編程的思路能不能想得通,能不能把一件事情規劃成程序的樣子來完成。能想得通的話,那麼開發就不是什麼困難的事情。

時間的話,因人而異了。上手會挺快的,幾個月,但是要想積累出自己的經驗,那就快不了了。


程序猿讀書進階路徑
《ios開發基礎知識》
《程序設計教程》
《ios系統操作教程》
《項目開發指南》
《產品經理指南》
《孫子兵法》
《情商》
《易經》
《禪的初心》
《佛經》
《老子》
《勁椎病康復指南》
《腰椎間盤突出日常護理》
《腱鞘炎的預防與治療》
《高血壓降壓寶典》
《強迫症的自我恢復》
《抑鬱症自我修復100問》
《精神病癥狀學》
《活著》。。。


具體需要掌握的一張圖就能夠說清了:

具體學習什麼,怎麼學習,請查看我回答的另外一篇帖子:iOS開發自學4個月完全沒自信,如何提高? - 不二周博的回答


iOS知識樹
關於入門iOS開發方面知識點哈,看了下幾個高分答案都沒有回答的很全面。我之前再一個回答里有稍微詳細的【感謝移步】:
iOS 開發怎麼入門? - 程旭元的回答

書本推薦方面
如果想要詳細的學習,個人認為光看視頻意義不大,因為視頻的知識傳遞效率太低了(不一定大家都這麼覺得哈)。比較建議看書,攻克知識點,手碼代碼。
推薦一些有進階梯度書籍的選擇。
1.《Objective-C基礎教程》
2.《Objective-C編程之道》
3.《Objective-C高級編程(iOS與OSX多線程和內存管理)》
4.《EffectiveObjective-C》


iOS開發很簡單
的確,簡單到一個大一新生剛學完C語言,都能很快的上手。但是不論是入門還是進階,都建議把基礎知識打牢固來。如果總覺得iOS開發夠用即可,沒有在頭幾年大量學習深層的開發知識,那麼就浪費了自己最好的學習時間。

沒用到的並非不重要
很多人在iOS初級開發過程中時,把注意力放多半在了UITableView、UICollectionView等UIView相關控制項上了,沒有去深入了解一些iOS設計上細節,比如UITableViewCell的復用是如何實現。哪怕是HTTP也分不清get和post的區別。更沒有在性能上下足夠多的功夫,不會用instrument去優化。一款用戶不過億的產品,確實也注意不到一些很重要的優化,但是一旦數據量上去了,每個UITableView的Cell圓角設計,如果還在使用layer.cornerRadius,這很可能成為一個App流暢度隱患。

何時才能算是進入iOS中級開發呢?
有的人開發了兩年,覺得自己好像無所不能了,應用上的東西都能開發了。去新的大型企業面試,基本面試題都答不上來。想不通,覺得是題目出難了。但其實是因為他把iOS想簡單了。這裡推薦高峰的一個很精彩的回答。如何面試 iOS 工程師? - 高峰的回答

所以,如果你是一個對自己未來較為有追求的工程師,建議更詳細更深度的學習開發,iOS還僅僅只是個開始。具體這需要多少年的時間才能說是精通呢?——我覺得越是深入,越不敢說精通了。


10年


1.你要喜歡編程,編程不喜歡很枯燥;
2.你要會英語,文檔基本都是英語寫的;
3.你要自己動手解決問題的能力和一定的邏輯思維能力;
4.密集學習至少需要半年或更久。


http://www.acfun.tv/v/ac451728
你去聽聽這個,你要的答案都在這裡面,這個東西的作者就是一位文科生,通過自學成為開發者的,他的觀點很好,但是你不要對他抱太大的好感,它能力很不錯,但是在思維方式上不同於常人,你要是向他表達你的觀點可能就會被認為是傻逼,但是人不錯


除了演算法有點費勁之外,編程和文理科真的一點關係都沒有。
本人大學美術專業,高中開始就沒學過數理化,現在代碼寫得唰唰的~基本上想要的東西都能寫出來。
iOS開發的學習內容,劉虓震同學已經說的很清楚了,我自己的經驗,從零開始,每天4小時Coding或學習Coding,二到三個月就會有小成。


develper是有點難度的,我的建議是做pm,文科生對用戶需求,用戶體驗的思維不一定會比理科生差,再加上一些項目管理和團隊溝通上的知識的話,也能作出不錯的產品。平時可以多把玩一些ios應用,慢慢就有感覺了。


先買個mac,再買本head first iphone 系列,可以開始操作了,和文科生理科生高中生本科生研究生高貴冷艷投行白領十八線吃麻辣燙茶水妹沒有任何關係。


好問題,iOS開發入門需要些什麼知識呢?
首先你接觸的應該是一些語言的基礎
從最最基本開始,建議的是看書,做筆記,動手敲,視頻質量有好有壞,而且重難點經常需要反覆觀看,對我這樣的人來說容易走神。這階段主要還是培養一個編程的邏輯感和知曉部分的基礎。
推薦閱讀,不過我當時是直接買書學習的:
《objective-c基礎教程》http://pan.baidu.com/s/1hq33HWS
《swift》語言指南http://pan.baidu.com/s/1c0jtgKK
後半句那個問題我想沒人能夠回答題主,因為不清楚你的一無所知是到什麼程度?精通又是到什麼程度?而且就算問的嚴謹了,每個人的情況也都是不一樣的,有些人半年就學的很好了,有的人學一半就放棄了。
我的建議是,猶猶豫豫會讓你從入門到精通的時間更長,所以不如自己先下定決心,努力嘗試。憋說話,自己感受。


不太清楚題主說的一無所知是什麼意思,如果題主是文科生,對於iOS開發完全零基礎,學習iOS開發會很難,不過要想自學iOS也不是不可能,需要具備兩點作為先決條件:
一、強大的自制力:
二、中等偏上的智力。
如果這兩點題主都不具備,就只能靠耗時間了。

大致看了一下大部分答案。我覺得題主還是應該注意一下,因為大部分答案的口徑都很一致:iOS開發很簡單!

相信說iOS開發很簡單的各位答主們也都是已經成為一名合格的iOS開發工程師了,對一個iOS開發完全零基礎的人說出這樣話,我只能說太****了!

作為一名iOS開發初學者,我的體會是從完全零基礎學習iOS開發是很難很難的,我自學了iOS開發一個月的時間,毫無頭緒最終放棄,報了培訓班後,從此順利入了iOS開發的坑。

現在知乎精英們黑培訓班貌似已經成了一種政治正確,好像培訓班出身的程序員就該感到多麼羞恥似的。不過據我所知,75%的iOS開發者都是培訓班出身(數據來源於之前看過的一個調查,具體比例忘了,所以說大概),據我觀察身邊的情形,這個比例還是太保守,真實情況只會高不會低。你們承認自己是培訓班出來就這麼難嗎!?

並且培訓班出來的iOS開發者也只是有好有壞,就好像科班出身的iOS開發者也有好有壞一樣,如果這75%的開發者都不靠譜,國內的移動化聯網怎麼可能發展到可以和美國相媲美的程度?不能因為某些不靠譜的個體,而黑整個群體。

給題主一些自己之前看過的還不錯的iOS開發教程:

我贏職場iOS9項目實戰開發工程師課程(Swift/Apple Watch/PHP)
斯坦福大學公開課:iOS 8開發

網上這種iOS開發的視頻教程有很多,先給大家兩個我個人認為質量很好的iOS開發學習的視頻教程,這兩個教程能夠按時學完,至少在iOS開發的知識儲備方面已經ok了,剩下的就是一些項目開發經驗了。

iOS開發入門需要掌握的知識不是很多,達到入門水平需要掌握的知識有:
OC語言、UI控制項、數據存儲、網路編程、第三方庫、網站wed伺服器、系統服務、多媒體
這些東西一開始自學的時候會感覺很亂很雜,沒有頭緒,入門後反而會感覺好很多。
但是題主如果是想要達到精通的水平,我認為沒有個四五年的項目開發經驗是絕不可能的。


Online video tutorials training 有很完備的課程。比如Programming for Non-Programmers: iOS。
步進式教程帶你熟悉iOS開發:Watch the Online Video Course Programming for Non-Programmers: iOS


其實相比較其他開發,iOS還是比較容易入門的,因為iOS開發的基礎語言是C語言,在大學的時候C語言屬於基礎課程,幾乎所有的理科專業都會學到的。掌握了C語言後,下一個階段就是OC語言,OC語言是面向對象語言,了解了類和對象,學起來應該不會太難,然後就是UI部分,主要學習各種UI控制項、界面搭建、UI動畫、以及控制器之間的相互關聯,基本不會太難,最後就是網路部分了,主要學習與網路相關的一些功能的實現,包括資料庫,多線程,視頻,音頻,地圖等等。如果是自學的話,自己能夠堅持每天學習至少三個小時,最少也需要一年的時間了,而如果參加培訓的話,一般需要四個月的時間就可以掌握了。當然,無論是自學還是培訓,都要自己肯努力才行。


認為還是要看語言天賦的,有的人很快上手,有的人覺得i=0;很難理解


寫個小軟體,從實戰出發。太多的技術和設計規範並不一定適合每個人,沒有最好的,只有最適合的。


推薦閱讀:

為什麼有人說《暗黑破壞神 3》中的隨機是「偽隨機」?
當正在閱讀的書籍、正在討論的內容或者正在解決的問題涉及到許多因素時,如何有效在大腦中組織這些因素?
Alienware 用來開發辦公,穩定可靠嗎?
27歲的男人學什麼技術比較有用?
我用個假簡歷去面試android的結果為什麼會這樣?

TAG:編程 | iOS開發 | iOS開發入門 |