ios 學習路線總結

學習方法

面對有難度的功能,不要忙着拒絕,而是挑戰一下,學習更多知識.html

儘可能獨立解決問題,而不是在遇到問題的第一想法是找人.前端

多學習別人開源的第三方庫,可以開源的庫必定有值得學習的地方,多去看別的大神的博客.python

做爲一個程序員,若是你中止了學習,你也必將會被這個團隊淘汰.ios

要把學習的技能當作興趣,而不是爲了掙錢去學習,是爲了學習技能而學習.程序員

有給本身定製一個詳細的職業規劃和人生規劃,大到5~10年,小到近3年(而且細化到月)的計劃.面試

不要盲目的面試,要針對即將面試的工做,準備面試.算法

首先針對一個本身沒有接觸到的知識,先使用 百度\谷歌等網站搜索資料.而後進行學習數據庫

這是個好東西,我勸你多用用https://developer.apple.com/search/設計模式

嘗試寫一個demo,對新技術進行熟悉.瀏覽器

若是市面上有成熟的Demo或者第三方庫,下載下來進行學習.

在熟悉的過程當中,遇到了任何問題,再進行百度/谷歌,學習不一樣人的不一樣見解和解決方法.


作一個負責任的開發者

那麼如今說正題,如何成爲負責任的開發者?

首先要負責,對本身的項目負責。若是是本身新開的項目,要保證隨時都能清晰的想到項目當中每一個地方是怎麼實現的,測試或者用戶反饋了問題之後,能立馬想到可能的錯誤緣由。

若是是接手的項目,就要儘快去了解主要的界面和功能是如何實現的。你只有先作好本身份內的事,纔有機會去顧暇別人的事。

1.保持一個良好的代碼規範以及文件架構。
2.天天要給本身作一個TodoList 和一個BugList,時刻保持本身是在有效率的工做,嚴重的須要時間修復的bug彙報上去,小bug本身記下來偷偷修復。
3.有空時將排行榜上的應用下載排名靠前的應用,去欣賞並分析主流app的界面,功能實現,在拿到設計圖時,去考慮界面的合理性,功能怎麼實現最符合用戶的操做習慣。
4.要有必定的協調能力,交流能力,稍微瞭解一點後臺知識以及前端知識。
5.信念,一個不作初級iOS開發的信念。多去了解,不會被別人當小白,學多少都是本身的,至於在你去學習的時候,有人會說風言風語,這就是區別,他們活該初級,本身不會的東西,也看不慣別人去學習。因此,必定要有一個規劃,按照本身正確的規劃去學習,去成長,別原地踏步。

關於後臺你須要懂什麼呢,如何設計接口文檔,接口怎麼設計合理,後臺拿到你請求的數據是怎麼存儲的,你須要的數據後臺又是怎麼查詢給你的,請求方式何時用get何時適合post,JSON格式的數據以及XML數據又有什麼好處。

關於前端你須要瞭解什麼呢,這裏大體提一下H5和app交互,好比H5怎麼調你的方法,你怎麼調H5的方法,數據如何傳遞,圖片如何交給H5顯示,這些都須要去了解。

有些人會以爲,我上面說的這都是廢話,或者說你知道有什麼用嗎,又沒你提意見的資格。iOS的羣廣泛是什麼風氣,就是你提出來一個建議或者意見,若是路人甲會,他就趾高氣昂懟你一頓,若是他不會,他就會說,會這個又沒用,懂這麼多又沒用什麼的bulabulabula。這就是第五點。

若是你想變強,那就作點什麼.


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的應用,多學習大公司以及流行應用是如何開發應用的,其中流行的,新穎的開發界面的方式能夠總結下來,猜測在大應用中,別的程序員是如何開發的.

      • 界面適配

    • 代碼架構.

    • 各類工具、第三方的使用.

      • 其實每一個項目的創建都大體分爲:項目框架搭建,原生界面搭建,嵌入第三方庫.有不少功能都會用到第三方庫,大多數第三方庫都是本着快速開發,完整功能實現的目的存在的.須要開發人員可以根據業務邏輯不一樣,選擇最好最優質的第三方庫進行使用.

    • 代碼封裝

      • 當使用較多第三方庫後,要求開發人員學習其開發特色,以及其封裝手法,運用在本身的項目上,封裝本身的代碼.靈活運用.

    • 完整項目.

    • 開發技巧

    • 我的心得


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

相關文章
相關標籤/搜索