建立iOS學習體系之內功篇(純干貨)

我準備出一系列的學習體系, 從秘籍(入門)->內功(修煉)->心法(融合)->大成(擁有自己的學習方法)
如何建立iOS學習體系之秘籍篇(純干貨)

如果大家需要可以評論或者私信我,我會將我文章中分享的圖書 pdf、epub、mobi 版本共享給大家!

做開發就像小說一樣需要修煉內在的東西, 它將會讓你更加懂得如何走向一個更大的舞臺, 這篇 內功篇 主要將以下幾個內容 :

  1. 當你已經入門iOS后, 應該通過幾種形式來提高自己的基礎能力
  2. 學會使用他人的框架, 并且從中吸取你需要的知識
  3. 融會貫通, 在自己編碼時適當的使用一些設計模式
  4. 多練、多學、多分享

下面我將這幾個大點逐一拆分進行細致的講解 ... ...

1. 當你已經入門iOS后, 應該通過幾種形式來提高自己的基礎能力

當看到這里的時候, 相信你已經擁有了編寫基礎部分的能力, 那么基礎部分指的是什么呢?

  1. @property 是什么?它會自動生成什么?不同的參數/屬性 代表著什么意思?使用場景是什么?
  1. UITableView , UICollectionView 在使用的時候, 不同的自定義cell、item是否應用熟練,?
  1. Autolayout是否熟練?
  1. MVC是否理解?其他的理解嗎?例如: MVVM , MVP
  1. 網絡層有了解嗎? NSURLSession有什么優點嗎?為什么使用HTTPS?
  1. AFN, SDWebImage 這兩個剛剛接觸的框架, 他們的基本運行原理你了解嗎?
  1. CGContextRef 了解嗎?
  1. CABasicAnimation 了解嗎?
  1. 列表控件多時為什么會卡?能優化嗎?怎么優化?
  1. 為什么棄用UIWebView?它有什么問題?用什么替代?
  1. pthread、NSLock 用過嗎?使用有什么注意的地方嗎?
  1. copy, mutableCopy 有什么區別嗎?
  1. CGD, NSThread 用過嗎?有什么區別嗎?NSRunLoop知道嗎? 它與線程的關系知道嗎?
  1. 內存管理知道嗎?ARC是如何進行內存布局的?怎么做到的自動釋放?@autoreleasepool 用過嗎?它是做什么的?
  1. Delegate、NSNotification、KVO、KVC、Block都知道嗎?它們是做什么的?什么場景使用?
  1. 一切皆對象你同意嗎?
  1. Runtime 你用過嗎? (基本的使用也可以) OC是動態語言你同意嗎?
  1. OC 有多繼承嗎?Category?
  1. 沙盒知道嗎?用來干什么的?有幾個文件?分別什么作用?
  1. 了解過最新的流行框架嗎?WWDC?
  1. 怎么看源碼知道嗎?蘋果開發了一些源碼?
  1. Block為什么會循環引用? __block 修飾后為什么可以在block中使用?block 為什么要用copy修飾?

... ...

相信你看到這里基本已經對現有的市場以及作者有所質疑。 老子剛學iOS,你就要求會這會那的!

其實不然, 正因為我是填過坑, 所以才不想讓你們的學習之路漫漫, 這些都是一些基本的問題, 說出來說明你關注的問題比較深入, 說不出來也沒關系, 你知道了自己當前的問題, 以及努力的方向, 相信總有一天, 回過頭來看這些問題, 對你來說, 不值一提. 瞬間秒殺

相信大部分問題的答案你都可以baidu, google出來.如果有需求,我可以自問自答,再整理一篇答案.

2.學會使用他人的框架, 并且從中吸取你需要的知識

就以上面我們說過的AFNetworking舉例說明(也可以說是Alamofire):

AFN 基本結構:

AFNetWorking , 頭文件, 引入所有需要的類. 通過引入它, 你可以獲取AFN的所有功能.

AFURLSessionManager 核心類, 通過它來實現大部分網絡相關功能

AFHTTPSessionManager 作為AFURLSessionManager的子類, 實現請求優化處理.

AFURLRequestSerialization 請求處理, 編解碼、優化、拼接請求等.

AFURLResponseSerialization 響應處理,序列化、回調分發、數據處理等.

AFSecurityPolicy 請求認證

AFNetworkReachabilityManager 監聽網絡請求狀態變化

值得借鑒的地方:

  1. 使用NSRunloop 默認在后臺保持一條線程,監聽用戶狀態變化,不需要時休眠,需要時喚醒。不需要每次都創建新線程來浪費手機空間
  1. dispatch_semaphore_t 控制對異步處理返回結果的控制,避免線程之間出現資源競爭問題
  1. 代碼思路清晰,結構明確
  1. 支持多種格式的解析, 流行的多為json和xml
  1. 安全方面也給出了很多的對應接口, 而且調用方便明了

... ...

再舉個栗子

ReactiveCocoa 函數響應式編程

那么什么是函數響應式編程?

我的理解是:當一個事件發生時,你需要對其進行監聽并作出相應的處理,這里 傳輸這個事件的橋梁就稱為 函數響應式編程

具體的例子:比如你要監聽ScrollView的滾動,或者按鈕點擊的action,或者View根據Model的變化動態 。 這一系列的東西都可以使用RAC作為實現,它提出了一個不一樣的編程角度!

MVVM框架的交互就可以使用RAC來搭建橋梁。

這里只是進行一個簡單的介紹,RAC方面的話還需要下功夫去學習一下,有興趣的同學可以follow我,我以后會出相關使用的教程等。

3.融會貫通, 在自己編碼時適當的使用一些設計模式

其實關于設計模式部分還是有很多需要聊得,這里簡單對其進行一個介紹

什么是設計模式?

我的理解來看,它是為了各個場景而生,在各種不同情況下,要怎么解決問題的一種方案!如我們老生常談的面向對象就是設計模式的一種,常類別或者對象來描述

那么這里我推薦給大家一本入門的書,大話設計模式,很適合新手看,中級也可以查漏補缺,就是這本
我有它的pdf版本,會在網盤中共享出來。

這里還有幾本設計模式、技能擴展相關的文章以及圖書,大家可以借鑒一下

  1. design_patterns
  1. Head First
  1. 設計模式之禪(第2版)
  1. Objective-C編程之道
  1. 程序員的自我修養
  1. 網絡是怎樣連接的
  1. 程序是怎樣跑起來的
  1. 計算機是怎樣跑起來的
  1. TCP/IP詳解卷1:協議
  1. 現代操作系統(原書第3版)
  1. 深入理解計算機系統(原書第3版)
  1. Python編程快速上手:讓繁瑣工作自動化
  1. 機器學習

4. 多練、多學、多分享

當你看過一些優秀的框架之后,一定要試著融匯到自己的項目中去使用,這樣做才能加深記憶,還可以更好的去理解其原理及為什么這么做

無論在工作還是平時,一定要多于他人溝通自己的想法,分享自己的心得,總結自己技巧、想法。

我在這里強烈推薦大家開始寫博客,當做筆記也好,寫著玩當日記也罷,寫什么都可以,最主要的是邁開第一步,相信以后的路會有很多條供你選擇。

一定要經常進行總結,將平時的Bug、Category、Views、Animations 等 統統總結起來,可以揉到一起、也可以放到github上與大家分享自己的小Demo。

也可以搭建自己的博客,不需要購買域名,通過 github + hexo 就可以輕松的擁有自己的網頁,你可以在上面隨心所欲。

這是我總結經驗的第二篇文章,總共四篇,希望可以幫助到你!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容