翻看自己以前的書簽,真?亂!平時基本都是不停的加東西,基本很少去整理?,F(xiàn)在項目沒有那么忙了,抽點時間好好搞搞。看到一篇非常好的文章,順便就去作者的博客看了看。真的非常非常好,轉發(fā)一下。希望自己能靜下心??。這個社會是太浮躁了,自己更是比社會還浮躁。。。。。
文章是轉載:自學 iOS 開發(fā)的一些經(jīng)驗 http://limboy.me/tech/2014/12/31/learning-ios.html
建議還是去看原貼
自學 iOS 開發(fā)的一些經(jīng)驗
不知不覺作為 iOS 開發(fā)也有兩年多的時間了,記得當初看到 OC 的語法時,愣是被嚇了回去,隔了好久才重新耐下心去啃一啃。啃了一陣,覺得大概有了點概念,看到 Cocoa 那么多的 Class,又懵了,怎么才能調用系統(tǒng)的相機?怎么保存信息?怎么做一個像 Twitter 個人頁那樣的頁面?總之就是不知道該從哪切入。
現(xiàn)在回想起來,其實路一直都在,而且有很多條,當初如果有人能夠指出一條還不錯的道,或許就能走得不那么艱難。于是就有了這篇文章,希望對后人能有所幫助吧。
基礎
一定的編程經(jīng)驗
這里說的編程經(jīng)驗是至少熟練一門編程語言,對 OOP 有一定的了解,最好熟悉一些基本的設計模式。遇到過的好多 iOS 開發(fā),大多是從別的語言轉過來的,所以有一定的編程基礎,學起來會更容易 get the point.
如果是第一次接觸編程,當然也是沒問題的,只是要做好心理準備,可能會比想象的難。
英語
發(fā)現(xiàn)不少開發(fā)對于英語似乎有點接受不能,通常都是中文優(yōu)先,除非迫不得已,才硬著頭皮看看 StackOverflow,英文文章,文檔等。忘了是誰說過「難走的路越走越好走」,通常如此。其實只要稍微 push 一下自己,那些技術文章啃下來應該不會有太大的問題,有過幾次成功的體驗后,這種恐懼感就會減少很多。優(yōu)質的文章、視頻、書籍,多是英文的,不邁過這個坎,將來要么成為瓶頸,要么花更大的成本去填補。
入門
書籍
要學習 iOS 開發(fā),自然要先學 Objective-C (當然現(xiàn)在也可以直接上 Swift,不過如果多人協(xié)作的話,OC目前還是主流),因為 OC 是 C 語言的超集,所以了解 C 語言對于學習 OC 肯定會有幫助,不過就算不了解,直接學 OC 也沒太大問題。
這里推薦 BNR (Big Nerd Ranch) 的這本 Objective-C Programming The Big Nerd Ranch Guide,講解地比較細致,能幫助你更好的理解 OC,更重要的是教你遇到問題時,如何去解決問題,以及這個問題對應的一些知識點,如何使用文檔等等。
來到一個新的世界,肯定會對這個世界充滿好奇,想訂閱一大堆博客,買一堆書,看各種教程和視頻,然后就變得浮躁,不知該從哪下手,這會導致拖延癥。我渴了,給我倒一杯水,這個很直接,馬上就可以做,但如果是給我買一瓶飲料,而自己對那些飲料又不怎么熟悉時,就糾結了,不如刷會微博,看看朋友圈,玩?zhèn)€小游戲先。
所以一本好的入門教材很重要,要契合自己當前的水平,且常常會有收獲,這種成就感會激勵著你繼續(xù)學下去。
在看書的過程中,往往會有這樣的經(jīng)歷:書中提到某個人、觀點、知識點、書、文章,然后就順著它提到的這些東西出去了,可能某個知識點又牽扯到另一些內容,然后就這樣越走越遠。想起了一個故事
三只獵狗追一只土拔鼠,土拔鼠逃跑時鉆進了一個樹洞。這個樹洞只有一個出口,不一會兒,忽然從樹洞里跑出一只兔子。兔子飛快地向前跑,并爬上另一棵大樹。兔子因為慌亂在樹上沒站穩(wěn),掉了下來,砸暈了正仰頭看的三只獵狗,最后,兔子終于逃脫。
對于這個故事可以從不同的角度去解讀,我更愿意以初心去解讀。兔子為什么會爬樹?為什么能砸暈三只獵狗?這不是重點,重點是,之前追趕的土撥鼠哪去了?看書時難免會有延伸閱讀,這個深度我覺得不宜超過 2 層,不然很容易就回不來了。
還有就是如果有可能,最好每天都看點,這其實是很難的,因為總是會有優(yōu)先級更高的事,或者之前的某些習慣在干擾。一旦斷了幾天,就不想再拿起來了。
還有,蘋果官方的 Start Developing iOS Apps Today 也是很不錯的入門材料。
視頻
推薦斯坦福老頭子(Paul Hegarty)的 Developing iOS 7 Apps for iPhone and iPad ,當初也是看的這個(那時還是更老的版本),Paul 是資深的 Mac/iOS 開發(fā)(前蘋果員工?),很多知識點講得很到位,學生們的提問也大都在點上,同時配有Demo,總之聽下來會對 iOS 開發(fā)有比較全面的了解。
同時推薦一本小冊子:objc-zen-book,花不長時間就能看完,里面是一些 Best Practices,對于編寫優(yōu)質代碼會很有幫助。
筆記
這是一個持久的過程,任何階段都適用。以前也沒太在意這個,覺得概念性的東西,腦子過一遍,就大概知道了,然后就去啃其他的東西了,現(xiàn)在看來,如果有記筆記的話,會更有助于消化概念、知識點,也可以記錄自己的思考過程。達芬奇就記錄了10000多頁的筆記。
記筆記可以加深對知識點的理解,而成為編程巨星的唯一秘訣就是:對所做的事情理解地越深,就會做得越好。同時如果遵循遺忘曲線去復習的話,效果更佳。對知識點了解地足夠透徹后,Debug 時才更有可能知道問題出在哪,解決問題也更容易有思路。
筆記不僅可以記知識點,也可以記錄調試過程,比如這篇筆記,有一種調試方法:小黃鴨調試法
許多程序員都有過向別人(甚至可能向完全不會編程的人)提問及解釋編程問題,就在解釋的過程中擊中了問題的解決方案。一邊闡述代碼的意圖一邊觀察它實際上的意圖并做調試,這兩者之間的任何不協(xié)調會變得很明顯,并且更容易發(fā)現(xiàn)自己的錯誤。
生活中我們可能不會真的這么去做,這時抽離出另一個自己,記錄下跟ta的對話,也是個發(fā)現(xiàn)問題的好方法。
練習
這也是一個持續(xù)的過程,知道了些概念或原理后,總是會想著去驗證下是不是這樣,無論結果是否如自己預期,實踐的過程會降低對語言的陌生感,慢慢地培養(yǎng)一種駕馭這門語言的自信,如果出了錯,正好可以重新梳理一下。
目標
如果靜下心來看完了 BNR 的這本書,以及斯坦福的 iOS 開發(fā)視頻,那么對 OC 應該比較了解了,一些常用的 UIKit 用起來也沒什么問題了,比如 UIViewController / UIView / UIScrollView / UIImageView / UITableView。也熟悉一些概念,如 KVO / MVC / Delegate / DataSource。
這個階段下來,應該會有:哦,iOS 開發(fā)也就這樣嘛,多翻翻文檔,熟悉 Cocoa Touch 的一些 Class,差不多也能做出一個簡單的 App 了。
進階
。。。。。
高級
。。。。。
其他
我覺得無論學習什么,「速成」的心態(tài)是最要不得的,這只會讓自己變得浮躁,一知半解,整個過程也很難讓自己的元學習能力得到提升。慢慢來,攻占一個城后,再去打下一個,這時心態(tài)也會平和許多。
自己自己
幾百斤的人了,很多道理都是知道的。但是知道真的有用嗎?人要能夠'思考',感覺自己就是一個沒開竅的傻瓜。才剛剛有點腦子思考
每天糾結的時間比干活的時間還要多,到處找各種提高效率的軟件。說道找軟件,自己真的有點病。什么軟件都要搞一下,一個筆記軟件,先是OneNote,后來是為知筆記,在后來用MarkDown,macDown-gitbook-mweb-備忘錄-dayone-簡書 記個筆記?到處都是,到現(xiàn)在還沒有固定的套路。一開始就是想找個最好的軟件來用,結果時間都花在找軟件上了。。。。。