我準備出一系列的學習體系, 從秘籍(入門)->內(nèi)功(修煉)->心法(融合)->大成(擁有自己的學習方法)
如何建立iOS學習體系之秘籍篇(純干貨)
如果大家需要可以評論或者私信我,我會將我文章中分享的圖書 pdf、epub、mobi 版本共享給大家!
做開發(fā)就像小說一樣需要修煉內(nèi)在的東西, 它將會讓你更加懂得如何走向一個更大的舞臺, 這篇 內(nèi)功篇 主要將以下幾個內(nèi)容 :
- 當你已經(jīng)入門iOS后, 應該通過幾種形式來提高自己的基礎能力
- 學會使用他人的框架, 并且從中吸取你需要的知識
- 融會貫通, 在自己編碼時適當?shù)氖褂靡恍┰O計模式
- 多練、多學、多分享
下面我將這幾個大點逐一拆分進行細致的講解 ... ...
1. 當你已經(jīng)入門iOS后, 應該通過幾種形式來提高自己的基礎能力
當看到這里的時候, 相信你已經(jīng)擁有了編寫基礎部分的能力, 那么基礎部分指的是什么呢?
- @property 是什么?它會自動生成什么?不同的參數(shù)/屬性 代表著什么意思?使用場景是什么?
- UITableView , UICollectionView 在使用的時候, 不同的自定義cell、item是否應用熟練,?
- Autolayout是否熟練?
- MVC是否理解?其他的理解嗎?例如: MVVM , MVP
- 網(wǎng)絡層有了解嗎? NSURLSession有什么優(yōu)點嗎?為什么使用HTTPS?
- AFN, SDWebImage 這兩個剛剛接觸的框架, 他們的基本運行原理你了解嗎?
- CGContextRef 了解嗎?
- CABasicAnimation 了解嗎?
- 列表控件多時為什么會卡?能優(yōu)化嗎?怎么優(yōu)化?
- 為什么棄用UIWebView?它有什么問題?用什么替代?
- pthread、NSLock 用過嗎?使用有什么注意的地方嗎?
- copy, mutableCopy 有什么區(qū)別嗎?
- CGD, NSThread 用過嗎?有什么區(qū)別嗎?NSRunLoop知道嗎? 它與線程的關系知道嗎?
- 內(nèi)存管理知道嗎?ARC是如何進行內(nèi)存布局的?怎么做到的自動釋放?@autoreleasepool 用過嗎?它是做什么的?
- Delegate、NSNotification、KVO、KVC、Block都知道嗎?它們是做什么的?什么場景使用?
- 一切皆對象你同意嗎?
- Runtime 你用過嗎? (基本的使用也可以) OC是動態(tài)語言你同意嗎?
- OC 有多繼承嗎?Category?
- 沙盒知道嗎?用來干什么的?有幾個文件?分別什么作用?
- 了解過最新的流行框架嗎?WWDC?
- 怎么看源碼知道嗎?蘋果開發(fā)了一些源碼?
- Block為什么會循環(huán)引用? __block 修飾后為什么可以在block中使用?block 為什么要用copy修飾?
... ...
相信你看到這里基本已經(jīng)對現(xiàn)有的市場以及作者有所質(zhì)疑。 老子剛學iOS,你就要求會這會那的!
其實不然, 正因為我是填過坑, 所以才不想讓你們的學習之路漫漫, 這些都是一些基本的問題, 說出來說明你關注的問題比較深入, 說不出來也沒關系, 你知道了自己當前的問題, 以及努力的方向, 相信總有一天, 回過頭來看這些問題, 對你來說, 不值一提. 瞬間秒殺
相信大部分問題的答案你都可以baidu, google出來.如果有需求,我可以自問自答,再整理一篇答案.
2.學會使用他人的框架, 并且從中吸取你需要的知識
就以上面我們說過的AFNetworking舉例說明(也可以說是Alamofire):
AFN 基本結構:
AFNetWorking , 頭文件, 引入所有需要的類. 通過引入它, 你可以獲取AFN的所有功能.
AFURLSessionManager 核心類, 通過它來實現(xiàn)大部分網(wǎng)絡相關功能
AFHTTPSessionManager 作為AFURLSessionManager的子類, 實現(xiàn)請求優(yōu)化處理.
AFURLRequestSerialization 請求處理, 編解碼、優(yōu)化、拼接請求等.
AFURLResponseSerialization 響應處理,序列化、回調(diào)分發(fā)、數(shù)據(jù)處理等.
AFSecurityPolicy 請求認證
AFNetworkReachabilityManager 監(jiān)聽網(wǎng)絡請求狀態(tài)變化
值得借鑒的地方:
- 使用NSRunloop 默認在后臺保持一條線程,監(jiān)聽用戶狀態(tài)變化,不需要時休眠,需要時喚醒。不需要每次都創(chuàng)建新線程來浪費手機空間
- dispatch_semaphore_t 控制對異步處理返回結果的控制,避免線程之間出現(xiàn)資源競爭問題
- 代碼思路清晰,結構明確
- 支持多種格式的解析, 流行的多為json和xml
- 安全方面也給出了很多的對應接口, 而且調(diào)用方便明了
... ...
再舉個栗子
ReactiveCocoa 函數(shù)響應式編程
那么什么是函數(shù)響應式編程?
我的理解是:當一個事件發(fā)生時,你需要對其進行監(jiān)聽并作出相應的處理,這里 傳輸這個事件的橋梁就稱為 函數(shù)響應式編程
具體的例子:比如你要監(jiān)聽ScrollView的滾動,或者按鈕點擊的action,或者View根據(jù)Model的變化動態(tài) 。 這一系列的東西都可以使用RAC作為實現(xiàn),它提出了一個不一樣的編程角度!
MVVM框架的交互就可以使用RAC來搭建橋梁。
這里只是進行一個簡單的介紹,RAC方面的話還需要下功夫去學習一下,有興趣的同學可以follow我,我以后會出相關使用的教程等。
3.融會貫通, 在自己編碼時適當?shù)氖褂靡恍┰O計模式
其實關于設計模式部分還是有很多需要聊得,這里簡單對其進行一個介紹
什么是設計模式?
我的理解來看,它是為了各個場景而生,在各種不同情況下,要怎么解決問題的一種方案!如我們老生常談的面向?qū)ο?/strong>就是設計模式的一種,常類別或者對象來描述
那么這里我推薦給大家一本入門的書,大話設計模式,很適合新手看,中級也可以查漏補缺,就是這本。
我有它的pdf版本,會在網(wǎng)盤中共享出來。
這里還有幾本設計模式、技能擴展相關的文章以及圖書,大家可以借鑒一下
4. 多練、多學、多分享
當你看過一些優(yōu)秀的框架之后,一定要試著融匯到自己的項目中去使用,這樣做才能加深記憶,還可以更好的去理解其原理及為什么這么做
無論在工作還是平時,一定要多于他人溝通自己的想法,分享自己的心得,總結自己技巧、想法。
我在這里強烈推薦大家開始寫博客,當做筆記也好,寫著玩當日記也罷,寫什么都可以,最主要的是邁開第一步,相信以后的路會有很多條供你選擇。
一定要經(jīng)常進行總結,將平時的Bug、Category、Views、Animations 等 統(tǒng)統(tǒng)總結起來,可以揉到一起、也可以放到github上與大家分享自己的小Demo。
也可以搭建自己的博客,不需要購買域名,通過 github + hexo 就可以輕松的擁有自己的網(wǎng)頁,你可以在上面隨心所欲。
這是我總結經(jīng)驗的第二篇文章,總共四篇,希望可以幫助到你!