iOS開發學習路線
前言
這裡築夢師,是一名正在努力學習的iOS開發工程師,目前致力於全棧方向的學習,希望可以和大家一起交流技術,共同進步,用簡書記錄下自己的學習歷程.
本文閱讀建議
1.一定要辯證的看待本文.
2.本文主要是本人對iOS開發經驗中總結的知識點
3.本文所有觀點僅代表本人.
4.本文只闡述學習路線和學習當中的重點問題.需要讀者自己使用百度進行擴充學習.
5.本文所表達觀點並不是最終觀點,還會更新,因為本人還在學習過程中,有什麼遺漏或錯誤還望各位指出.
6.覺得哪裡不妥請在評論留下建議~
7.覺得還行的話就點個小心心鼓勵下我吧~
目錄
1.對本職業看法
2.學習方法
3.職業規劃
4.iOS開發學習路線
5.iOS基礎知識點
6.iOS中級知識點
7.iOS高階知識點
8.官方Kit
對本職業看法
16年我嘗試加入各種iOS開發交流群,群裡的氣氛大致就是:學什麼iOS,iOS完了,OC完了.群裡大致三種人:誰有企業開發證照,馬甲包瞭解一下,iOS某網課推廣.至今,大部分iOS開發群還都是僅供吹水用,偶爾能碰見幾個好心人解決一下問題.
個人觀點
個人觀點:iOS開發這個職業,不是別人說完就完的,那些說完了的人都是因為技術菜,沒有權威性,不想想自己為什麼菜,為什麼沒有和唐巧王巍在一個高度,因為菜.
還沒有到達一個高度就輕易否定一個職業,註定被這個職業淘汰.
所以,無視掉這種人這麼荒謬的觀點,那些真正有技術,懂得學習的iOS高階開發工程師,現在正在各大企業(騰訊百度阿里等),一句話,不要有比上不足比下有餘的態度.努力學習.
真正會學習的人,不會說iOS完了,而是想著如何提升自己,你想想,真正牛逼的人,真的只會iOS開發這一種嗎?
學習方法
面對有難度的功能,不要忙著拒絕,而是挑戰一下,學習更多知識.
儘量獨立解決問題,而不是在遇到問題的第一想法是找人.
多學習別人開源的第三方庫,能夠開源的庫一定有值得學習的地方,多去看別的大神的部落格.
作為一個程式設計師,如果你停止了學習,你也必將會被這個團隊淘汰.
要把學習的技能當做興趣,而不是為了掙錢去學習,是為了學習技能而學習.
有給自己定製一個詳細的職業規劃和人生規劃,大到5~10年,小到近3年(並且細化到月)的計劃.
不要盲目的面試,要針對即將面試的工作,準備面試.
首先針對一個自己沒有接觸到的知識,先使用 百度谷歌等網站搜尋資料.然後進行學習
這是個好東西,我勸你多用用https://developer.apple.com/s…
嘗試寫一個demo,對新技術進行熟悉.
如果市面上有成熟的Demo或者第三方庫,下載下來進行學習.
在熟悉的過程中,遇到了任何問題,再進行百度/谷歌,學習不同人的不同看法和解決方法.
職業規劃
個人觀點
首先是針對iOS這個行業,找不到工作要從自身找原因,為什麼自己沒有大公司的工作經歷,為什麼大公司會把自己斃掉,因為實力不夠,因為你菜,你不夠強.要從自身找原因,是,培訓機構一陣子培訓了一堆iOS開發工程師,但你不能從特麼一堆菜鳥中殺出去,你就是菜鳥,不要怨天尤人了,好好努力學習.
不要只做到鶴立雞群,而想著怎麼離開這群雞,重歸鶴群.
針對程式設計師行業,這是一個需要努力奮鬥的行業,也許他並不需要你有多高的文憑,好的文憑可以去大公司工作,沒有好的文憑,但擁有豐富的工作經驗,和開源庫,也會是你本人實力的體現.所以,努力學習,路是自己走出來的,原地踏步誰也救不了你.
職業規劃一般分為兩種,橫向和縱向,程式設計師行業橫向走專案經理提成獲得分紅,縱向發展成為技術經理,必要時可以自行創業
iOS開發學習路線
iOS定位
-
iOS定位
- 簡介:這裡的定位,僅僅代表我個人意見,僅符合本筆記如何學習從哪裡開始學習,怎麼去學習來說.
-
尚未入門
-
如何判斷自己是否入門
- 是否瞭解Mac
- 是否瞭解Xcode
- 是否瞭解Objective-C
- 是否會使用UI控制元件.
- 如果上面的都不瞭解,那說明你還沒有入門,請從iOS學習路線開始學習.
-
-
初級iOS開發
- 說明:作為一名初級的iOS開發,你需要具備以下技能
-
必備技能(全部都會的情況下檢視下一項)
- Xcode的使用
-
第三方庫的靈活使用
- AFN
- MJRefresh
- 各種網站的使用
-
如何判斷是否可以升階
- 是否瞭解AFNetworking 的實現原理
- 是否瞭解SDAutolayout/Masonry 一種佈局庫的原理
- 是否能夠處理基本的iOS崩潰原因/無法編譯原因/無法上架原因?
- 是否擁有了一定的工作效率,穩定的工作效率.(而不是說,上面派了一個活下來,忙都忙不完,天天加班,還一堆bug)
- 是否能夠處理第三方庫引起的崩潰.
- 是否可以很好的融入工作環境,完成每一階段的工作指標,而不會讓自己疲憊不堪.
-
結論
- iOS中級開發說白了,就是你學會了基本的UI介面搭建,上架,沉澱一段時間,你覺得自己還適合這門行業,還適合,還能接受 這個所謂的iOS開發工程師的行業.你就可以說是一名中級iOS開發.
- 這個沉澱時間 大約在1年的實際工作中,就可以完成.
- 如果你覺得這門行業不適合你,請仔細結合自身情況,是否轉另一門計算機語言,還是徹底轉行.
-
中級iOS開發
- 說明:作為一名中級的iOS開發,你需要具備以下技能
-
必備技能(全部都會的情況下檢視下一項)
- 應用的記憶體處理
- 應用的推送處理
- 應用的模組化/單元測試
- 應用的第三方整合/集中化管理/穩定迭代
- 閱讀強大的第三方原始碼/擁有快速上手新的第三方庫的能力.
- 能夠接受各種新功能的開發(這裡是指,即使你沒有做過,但是你仍然可以憑藉著學習,解決任何業務需求:例如:藍芽.AR.攝像頭.硬體互動.等)
- 清楚明白資料的傳遞方式,應用與後臺如何交換資料,交換資料的過程,結果,格式.
- 多執行緒的靈活使用.
- 各種併發事件的處理/以及介面的合理性/流暢度
- 設計模式的靈活使用.
- 如何判斷是否可以升階
- 結論
-
高階iOS開發
- 說明:作為一名高階的iOS開發,你需要具備以下技能(我不是高階開發,所以這裡只能給你們提供建議.)
-
必備技能
- 應用的元件化/架構分層
- 資料結構,作業系統,計算機網路都有自己的瞭解和認知
- Shell指令碼/python/Ruby/JS 至少會一種.
***
詳細學習路線
-
學習路線
- 簡介
這裡只簡單闡述一些概念性的東西,以及學習路線規劃,真正的知識請從iOS基礎知識點往下開始看. -
Objective-C
- 介紹
- 概念
- 編譯原理
-
程式啟動原理
-
App組成
- Info.plist
- .pch
- 開啟程式
- 執行main函式
- 執行UIApplicationMain函式
- 初始化UIApplication(建立設定代理物件,開啟事件迴圈)
- 監聽系統事件
- 結束程式.
-
-
語法.(此處定義可能略失嚴謹,口頭教學為主)
- 基礎語法
- 物件.
- 屬性
- 資料型別
- 方法
- 繼承
- Frame/CGRect/CGPoint和CGSize
- 記憶體(針對MRC下情況進行介紹)
- ARC/MRC
- 弱引用/強引用
- Assign,retain,copy,strong
- import 和@class的區別
-
Xcode使用
- 首先是針對Xcode選單欄,希望自己可以去翻譯一下每個選單裡每項功能的英文都是什麼意思,有助於自己熟悉並加深印象的使用Xcode.
- 熟悉Xcode的各個功能.
- UIKit控制元件.
-
介面分析(下載App進行學習).
- 在這裡推薦有興趣的開發人員,下載並分析,AppStore中的每項分類的top50的應用,多學習大公司以及流行應用是如何開發應用的,其中流行的,新穎的開發介面的方式可以總結下來,猜想在大應用中,別的程式設計師是如何開發的.
- 介面適配
-
程式碼架構.
- 程式碼架構文章推薦:https://casatwy.com/iosying-y…
-
各種工具、第三方的使用.
- 其實每個專案的建立都大致分為:專案框架搭建,原生介面搭建,嵌入第三方庫.有很多功能都會用到第三方庫,大多數第三方庫都是本著快速開發,完整功能實現的目的存在的.需要開發人員能夠根據業務邏輯不同,選擇最好最優質的第三方庫進行使用.
-
程式碼封裝
- 當使用較多第三方庫後,要求開發人員學習其開發特點,以及其封裝手法,運用在自己的專案上,封裝自己的程式碼.靈活運用.
- 完整專案.
- 開發技巧
- 個人心得
- 簡介
iOS基礎知識點
-
iOS基礎知識點
-
如何學習iOS
-
剛剛入門(如何學習)
- 打好基礎,學習OC中各種常用語法.
- 學習如何上架,上架會因為什麼被拒,瞭解App上架規則.
- 多學習官方說明文件.
-
剛剛入職1年(如何穩定)
- 多看開源或者註明的第三方庫.
- 收藏並閱讀各種大神的部落格或者論壇.
- 開始考慮專案中的細節優化,記憶體處理和耗電情況
-
入職3年(如何進階)
- 開始涉獵不止於iOS領域中的知識,會去了解相關職位的基礎知識,例如前端和後臺或者伺服器運維,或者專案相關知識,具體往自己的職業規劃靠攏
-
-
框架的學習
- 蘋果自帶框架
-
第三方框架
- AFNetworking
- SDAutoLayout
- YYKit
- SDWebImage
- MJRefresh
- MJExtension
- Bugly
- Qiniu
- Masonry
- TZImagePickerController
- Hyphenate_CN
-
基礎UI控制元件
- UILabel 標題欄
- UIButton 按鈕
- UIImageView 圖片檢視
- UITextField 文字輸入框
- UITextView 文字展示檢視
- UIProgressView 進度條
- UISlider 滑動開關
- UIGesture 手勢
- UIActivityIndicator 菊花控制元件
- UIAlertView(iOS8廢除) 警告框
- UIActionSheet(iOS8廢除) 操作表單
- UIAlertController(iOS8出現) 警告檢視控制器
- UIScrollView 滾動檢視
- UIPageControl 頁面控制器
- UISearchBar 搜尋框
- UITableView 表檢視
- UICollectionView集合檢視
- UIWebView網頁瀏覽器
- UISwitch開關
- UISegmentControl選擇按鈕
- UIPickerView選擇器
- UIDatePicker日期選擇器
- UIToolbar工具欄
- UINavigationBar通知欄
- UINavigationController通知檢視控制器
- UITabbarController選擇檢視控制器
- UIImagePickerController相簿
- UIImage圖片
-
Xcode的使用
- 基礎操作 狀態列
- 偏好設定
- Xcode Source Control 原始碼管理器
- Xcode workSpace工作組
- Xcode Scheme 計劃
- Xcode AutoLayout 約束
- Xcode CoreData資料庫
- LLDB 斷點除錯
- StoryBoard
- 介面預覽
- 介面適配
- 記憶體監測
- 全域性斷點
- 全域性搜尋替換
-
資料儲存
- plist
- NSKeyedArchiver
- SQLite
- FMDB
- CoreData
- NSUserDefault
- 沙盒儲存
- NSDictionary歸檔
-
App生命週期
- 應用生命週期
-
控制器生命週期
- alloc
- init
- 建立View
- ViewDidLoad
- ViewWillAppear
- ViewDidAppear
-
ViewWillDisappear
- 檢視將要消失 (做一些檢視將要消失時的UI的處理)
-
ViewDidDisappear
- 檢視已經消失 (做一些檢視消失之後資料的處理)
- viewDidDisappear銷燬定時器
- dealloc
- didReceiveMemoryWarning
-
開發者賬號&上架流程
-
常用知識
- 通訊
- NS系列
- 巨集定義
- 檢視層次
- 切換檢視
- 深淺拷貝
- 物件序列化
- 寫入檔案
- 獲取沙盒路徑
- 翻轉檢視
- 延伸檢視
- 九大基本資料型別
- 九宮格
- 座標比較
- UIColor 、CIColor和CGColor 之間的關係
- 畫圖
- 靜態變數
- tag值
- 延時執行方法
- 介面旋轉+狀態列隱藏
- plist檔案
- KVC/KVO
- 謂詞NSPredicate
- 幀動畫
- AutoLayout
- isKindOfClass 與 isMemberOfClass
- Return/Break/Continue
- Core Animation
- CALayer
- Quartz2D
- 真機除錯
- 靜態庫
- 記憶體管理
- iPad與iPhone的區別
- 響應鏈
- 異常捕捉
- 國際化
- 程式碼模組化
- 類別/擴充套件
-
中級知識點
- 設計模式
- UIScrollView/UITableView/UICollectionView 的巢狀
- 動態行高
- 通知/代理/block
- 程式啟動原理
- 觸控事件/手勢
- 圖文混編
- Runtime
- NSRunLoop
- GCD
- ReactiveCocoa開發
- 3DTouch
- 介面渲染
- Charles花瓶抓包
- 區分模擬器/真機專案
-
常用知識
- 單例模式
- 多執行緒
- 網路請求
- 定位
- 原始碼管理Git
- 真機除錯
- 蘋果內購/廣告
- 推送/遠端推送
- 音訊/視訊/二維碼
- Block
- 藍芽/感測器
- 物理模擬器UIDynamic
- 通訊錄獲取
iOS高階知識點
-
iOS高階知識點
- Socket
- XMPP
-
加密
- MD5詳解
- Base64加密解密
- RSA非對稱加密
- AES對稱加密
-
音訊
- 基礎
- Core Audio
- Audio Toolbox
- OpenAL
- AVFoundation
- Speex語音聊天
- AudioQueue/AudioSession
- Speex簡介
-
視訊
- AAC視訊.H264推流
- P2P傳輸
-
直播
- 直播的技術分析與實現
- RTMP協議
- RTMP直播應用與延時分析
- 如果做一款inke版的App
- 推流釋出和播放RTMP
- FFmpeg
- 基於FFmpeg的推流器
- HLS流媒體傳輸協議(HTTP Live Streaming)
- FFmpeg
- ijkPlayer
-
演算法
- 簡介
- 氣泡排序
- 快速排序
- 插入排序
- 歸併排序
- 二分查詢
- 希爾排序
- 動態規劃
- 堆排序
官方Kit
- ARKit.
- SiriKit
- HealthKit
- HomeKit
- SearchKit
- IOKit
- PDFKit
- CloudKit
- GameplayKit
- SpriteKit
- SceneKit
- MusicKit
- ResearchKit
- MapKit
- StoreKit
- AVKit
結束語
如果您對這篇文章有什麼意見或者建議,請評論與我討論.
如果您覺得還不錯的話~可以點個喜歡鼓勵我哦.
如果您想和我一起學習,請毫不吝嗇的私信我吧~
介個是我的個人部落格,歡迎參觀哦~