Limboy 自學 iOS 開發的一些經驗

2021-06-28 00:32:51 字數 3806 閱讀 8824

不知不覺作為 ios 開發也有兩年多的時間了,記得當初看到 oc 的語法時,愣是被嚇了回去,隔了好久才重新耐下心去啃一啃。啃了一陣,覺得大概有了點概念,看到 cocoa 那麼多的 class,又懵了,怎麼才能呼叫系統的相機?怎麼儲存資訊?怎麼做乙個像 twitter 個人頁那樣的頁面?總之就是不知道該從哪切入。

現在回想起來,其實路一直都在,而且有很多條,當初如果有人能夠指出一條還不錯的道,或許就能走得不那麼艱難。於是就有了這篇文章,希望對後人能有所幫助吧。

基礎

一定的程式設計經驗

這裡說的程式設計經驗是至少熟練一門程式語言,對 oop 有一定的了解,最好熟悉一些基本的設計模式。遇到過的好多 ios 開發,大多是從別的語言轉過來的,所以有一定的程式設計基礎,學起來會更容易 get the point.

如果是第一次接觸程式設計,當然也是沒問題的,只是要做好心理準備,可能會比想象的難。

英語

入門

書籍

要學習 ios 開發,自然要先學 objective-c (當然現在也可以直接上 swift,不過如果多人協作的話,oc目前還是主流),因為 oc 是 c 語言的超集,所以了解 c 語言對於學習 oc 肯定會有幫助,不過就算不了解,直接學 oc 也沒太大問題。

這裡推薦 bnr (big nerd ranch) 的這本 objective-c programming the big nerd ranch guide,講解地比較細緻,能幫助你更好的理解 oc,更重要的是教你遇到問題時,如何去解決問題,以及這個問題對應的一些知識點,如何使用文件等等。

所以一本好的入門教材很重要,要契合自己當前的水平,且常常會有收穫,這種成就感會激勵著你繼續學下去。

在看書的過程中,往往會有這樣的經歷:書中提到某個人、觀點、知識點、書、文章,然後就順著它提到的這些東西出去了,可能某個知識點又牽扯到另一些內容,然後就這樣越走越遠。想起了乙個故事——

三隻獵狗追乙隻土拔鼠,土拔鼠逃跑時鑽進了乙個樹洞。這個樹洞只有乙個出口,不一會兒,忽然從樹洞裡跑出乙隻兔子。兔子飛快地向前跑,並爬上另一棵大樹。兔子因為慌亂在樹上沒站穩,掉了下來,砸暈了正仰頭看的三隻獵狗,最後,兔子終於逃脫。

對於這個故事可以從不同的角度去解讀,我更願意以初心去解讀。兔子為什麼會爬樹?為什麼能砸暈三隻獵狗?這不是重點,重點是,之前追趕的土撥鼠哪去了?看書時難免會有延伸閱讀,這個深度我覺得不宜超過 2 層,不然很容易就回不來了。

還有就是如果有可能,最好每天都看點,這其實是很難的,因為總是會有優先順序更高的事,或者之前的某些習慣在干擾。一旦斷了幾天,就不想再拿起來了。

同時推薦一本小冊子:objc-zen-book,花不長時間就能看完,裡面是一些 best practices,對於編寫優質**會很有幫助。

筆記

記筆記可以加深對知識點的理解,而成為程式設計巨星的唯一秘訣就是:對所做的事情理解地越深,就會做得越好。同時如果遵循遺忘曲線去複習的話,效果更佳。對知識點了解地足夠透徹後,debug 時才更有可能知道問題出在哪,解決問題也更容易有思路。

筆記不僅可以記知識點,也可以記錄除錯過程,比如這篇筆記,有一種除錯方法:小黃鴨除錯法

許多程式設計師都有過向別人(甚至可能向完全不會程式設計的人)提問及解釋程式設計問題,就在解釋的過程中擊中了問題的解決方案。一邊闡述**的意圖一邊觀察它實際上的意圖並做除錯,這兩者之間的任何不協調會變得很明顯,並且更容易發現自己的錯誤。

生活中我們可能不會真的這麼去做,這時抽離出另乙個自己,記錄下跟ta的對話,也是個發現問題的好方法。

練習

這也是乙個持續的過程,知道了些概念或原理後,總是會想著去驗證下是不是這樣,無論結果是否如自己預期,實踐的過程會降低對語言的陌生感,慢慢地培養一種駕馭這門語言的自信,如果出了錯,正好可以重新梳理一下。

目標

高階

入門之後,接下來可以折騰的東西還會有不少。

書籍

ios programming: the big nerd ranch guide (4th edition),又是一本 bnr 的書,這本書的特點是通過 demo 來引出知識點,然後提一些問題,並且會細說解題思路。看書的過程中,對於元學習能力的提公升也會有一定幫助。

--- update ---

發現巧哥的 ios開發高階 已經可以在京東買到了,雖然沒有細看,但巧哥出品質量肯定有保障。

其他資源

進入這個階段後,可以去探索更大的世界了,現在的資源已經很豐富了,但還是要遵循「少而精」的原則。以下是我覺得挺不錯的資源

ios dev weekly 每週一期,內容多為這一星期裡值得關注的github專案、文章、工具等。

ios 移動開發週報 這是唐巧大大整理的每週不錯的 ios 開發相關的內容,多為中文。

raywenderlich 很多詳細又全面的教程,不容錯過。

ios dev slack 國內不少 ios 開發(包括大大們)都在這裡,不過現在好像不怎麼能拿到邀請了。

中文 ios/mac 開發部落格列表,開啟工具訂閱吧。

還有,如果可能的話,多去分享自己學到的東西,教是最好的學,我試過幾次,效果真的很不錯。

目標

這個階段下來,對於常用的設計模式、記憶體管理、blocks 的使用、影象操作、網路請求和管理、多執行緒應該比較熟悉了。對於 calayer、animation、uiscrollview、uitableview、uicollectionview、 viewcontroller container 則非常熟悉,對「非常熟悉」的定義是:不開啟 xcode,腦子裡就能把相應的知識點複述出來 80% ,比如這個類有哪些方法,delegate / datasource 有哪些方法,怎麼使用,如果要實現某個效果,應該怎麼做(好吧, uicollectionview 除外)。

高階

其實高階、高階、入門並沒有嚴格的界限,在入門階段也可以**高階階段的一些東西。我覺得支撐我們不斷探索和前進的動力不是興趣,而是永不滿足的好奇心,和對優雅**的追求。

if your standards are low, you're going to stop pretty early on in the process.

bnr 的這篇 leveling up 已經講得很好了,也更加細緻。

書籍

原始碼

看優秀的原始碼,可以學到很多東西,使用過程中遇到問題也更容易解決。這些是我覺得值得細看的原始碼:afnetworking(nsoperation, http, block), sdwebimage(image handle, cache, nsoperation, block),svpulltorefresh(uiscrollview, state handle), jsonmodel(runtime)

資源

工具

目標

這個階段,對於底層的實現會有更深入的了解,各種 core 開頭的 framework 至少可以說出個大概,工具也能熟練使用,「正經的**」寫過數萬行,可能天天在翻 dash。如果別人讓你實現某個功能,能在較短的時間內給出不錯的實現方案,並且足夠細緻,甚至精細到如何使用 core graphic 去畫某個影象。

其他

我覺得無論學習什麼,「速成」的心態是最要不得的,這只會讓自己變得浮躁,一知半解,整個過程也很難讓自己的元學習能力得到提公升。慢慢來,攻占乙個城後,再去打下乙個,這時心態也會平和許多。

Limboy 自學 iOS 開發的一些經驗

不知不覺作為 ios 開發也有兩年多的時間了,記得當初看到 oc 的語法時,愣是被嚇了回去,隔了好久才重新耐下心去啃一啃。啃了一陣,覺得大概有了點概念,看到 cocoa 那麼多的 class,又懵了,怎麼才能呼叫系統的相機?怎麼儲存資訊?怎麼做乙個像 twitter 個人頁那樣的頁面?總之就是不知道...

自學 iOS 開發的一些經驗

現在回想起來,其實路一直都在,而且有很多條,當初如果有人能夠指出一條還不錯的道,或許就能走得不那麼艱難。於是就有了這篇文章,希望對後人能有所幫助吧。一定的程式設計經驗 這裡說的程式設計經驗是至少熟練一門程式語言,對 oop 有一定的了解,最好熟悉一些基本的設計模式。遇到過的好多 ios 開發,大多是...

自學 iOS 開發的一些經驗

不知不覺作為 ios 開發也有兩年多的時間了,記得當初看到 oc 的語法時,愣是被嚇了回去,隔了好久才重新耐下心去啃一啃。啃了一陣,覺得大概有了點概念,看到 cocoa 那麼多的 class,又懵了,怎麼才能呼叫系統的相機?怎麼儲存資訊?怎麼做乙個像 twitter 個人頁那樣的頁面?總之就是不知道...