iOS開發學習路線

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
    • 開發者賬號&上架流程

      • 文章推薦:

        • https://www.jianshu.com/p/660...
        • https://www.jianshu.com/p/7c9...
        • https://www.jianshu.com/p/9b9...
      • 個人
      • 公司
      • 企業
    • 常用知識

      • 通信
      • 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

結束語

如果您對這篇文章有什么意見或者建議,請評論與我討論.
如果您覺得還不錯的話~可以點個喜歡鼓勵我哦.
如果您想和我一起學習,請毫不吝嗇的私信我吧~
介個是我的個人博客,歡迎參觀哦~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538858.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538858.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538858.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android快速開發框架XUtils

原文地址:http://blog.csdn.net/rain_butterfly/article/details/37812371 點擊閱讀原文 -------------------------------------------- https://github.com/wyouflf/xUtils https://github.com/wyouflf/xUtils3 XUtils是基于afinal開發的,比afina…

oracle查看序列數據語法,oracle查詢各種數據字典的語法

ORACLE的數據字典是數據庫的重要組成部分之一,它隨著數據庫的產生而產生, 隨著數據庫的變化而變化,體現為sys用戶下的一些表和視圖。數據字典名稱是大寫的英文字符。數據字典里存有用戶信息、用戶的權限信息、所有數據對象信息、表的約束條件、統計分析數…

如何安裝python3.8.1_python3.8.1 安裝

Loading...請注意,本文編寫于 217 天前,最后修改于 217 天前,其中某些信息可能已經過時。系統環境:centos 7 安裝依賴項 bash yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-d…

明年新iphone使用增強版5nm芯片_蘋果A15芯片或將采用臺積電5nm+工藝!性能提升極強...

今年蘋果的iPhone 12系列搭載的A14 仿生芯片是今年智能手機市場推出的第一款5nm工藝處理器,處理器的性能也是用戶有目共睹的,相較于之前的芯片性能提升了一大截,有眾多網友也表示:蘋果芯片最大的敵人就是上一代的自己。當然&#…

php中dump怎么使用,php – 如何正確使用print_r或var_dump?

我在調試時經常使用以下代碼段:echo "" . var_dump($var) . "";而且我發現我通常會得到一個很好的可讀輸出.但有時我卻不這樣做.這個例子我現在特別煩惱:$usernamexxxxxx;$passwordxxxxxx;$data_urlhttp://docs.tms.tribune.com/tec…

Spring Framework 5 中的新特性

https://www.ibm.com/developerworks/cn/java/j-whats-new-in-spring-framework-5-theedom/index.html Spring 5 于 2017 年 9 月發布了通用版本 (GA),它標志著自 2013 年 12 月以來第一個主要 Spring Framework 版本。它提供了一些人們期待已久的改進,還…

怎么計算一組數據的波動_稅控盤數據和小規模增值稅申報表計算結果不一致怎么辦...

a公司為小規模納稅人,于2020年1月申報2019年第四季度增值稅時,是按照金稅盤的數據實際銷售金額為562,563,13元,實際銷售稅額為16,876.87元填寫小規模納稅人增值稅申報表。申報成功后,稅務系統卻跳出比對異常,戶管員要求…

簡單又好看的按鈕,扁平化按鈕。

原文地址:http://blog.csdn.net/peijiangping1989/article/details/19333779 點擊閱讀原文 ----------------------------------------------------------- 今天分享一下流行的扁平化按鈕。完全不需要用到圖片哦。效果圖如下: 里面有2個按鈕都是一樣的…

python輸入三行、能出來三行數據_python 讀入多行數據的實例

一、前言本文主要使用python 的raw_input() 函數讀入多行不定長的數據,輸入結束的標志就是不輸入數字情況下直接回車,并填充特定的數作為二維矩陣二、代碼def get2dlistdata():res []inputline raw_input() #以字符串的形式讀入一行#如果不為空字符串作…

請問,現在android流行什么開源框架?

retrofit2.0RxjavagreenDao3大流行圖片庫p,g,f(Picasso,Fresco,Glide) 3分鐘全面了解Android主流圖片加載庫 http://blog.csdn.net/carson_ho/article/details/51939774 Retrofit2使用(非常簡潔易懂) ht…

matlab 銳化降噪,matlab 圖形銳化 濾波

help imreadhelp fspecial imfilt幫助穩定中有較多的示例fspecial 函數功能:產生預定義濾波器格式:Hfspecial(type)Hfspecial(gaussian,n,sigma) 高斯低通濾波器Hfspecial(sobel) Sobel 水平邊緣增強濾波器Hfspecial…

執行 link.exe 時出錯_在20多歲時應該做什么,以避免在30多歲和40多歲時后悔?...

1. 永遠不要以為自己可以,將會或曾經到達過以為是錯誤的。無論是幸福,收入還是心態。在二十多歲的關鍵時期,我有這種心態,對我自己不利。認為自己“實現”是一種靜態的世界觀,阻礙了您的成長。接受這樣的事實&#xff…

音頻自動增益 與 靜音檢測 算法 附完整C代碼

前面分享過一個算法《音頻增益響度分析 ReplayGain 附完整C代碼示例》 主要用于評估一定長度音頻的音量強度, 而分析之后,很多類似的需求,肯定是做音頻增益,提高音量諸如此類做法。 不過在項目實測的時候,其實真的很難…

python繪制餅狀圖圖例_使用matplotlib的所有餅圖的通用圖例

圖例只需調用一次,否則將顯示7個不同的圖例。我在下面展示了一個例子。請注意,您必須將自己的數據替換為ax.pie():data1 (10,90) # some data to be plotted data2 (40,50) data3 (70,30) labels [Sending Data, Not Sending Data] #lege…

Android初始化本地數據庫

原文:http://blog.csdn.net/itjavawfc/article/details/50860647 點擊閱讀原文 -------------------------------- 最近遇到一個需求,一個同學不會搭服務器,但是Android課程設計需要用到很多數據,這樣就出現了一個問題&#xff0c…

jsp springmvc 視圖解析器_springMVC配置jsp/html視圖解析器

1、maven項目引入freemark相關jar包freemaker是以個模板引擎,可以根據提供的數據和創建好的模板,去自動的創建html靜態頁面。所以在返回html視圖時可以用這個引擎結合數據生成html靜態頁面。org.springframeworkspring-context-support5.0.7.RELEASEorg.freemarkerf…

php設計模式原型模式,原型模式_設計模式_設計模式之原型模式 - Lane Blog

108Clicks: 6614 Date: 2014-04-21 21:48:35 Power By 李軒Lane原型模式提取重復功能,避免了程序員喜歡復制粘貼的壞習慣。設計模式中的原型模式就是,用原型實例指定創建對象的重力,通過拷貝這些原型來創建新的對象從一個對象再創建另外一個可…

Windows2003如何安裝IIS和ftp

【開始】----【控制面板】----【添加或刪除程序】 出現如下“添加或刪除程序”界面,點擊“添加/刪除windows組件(a) ” 出現如下“window組件向導”界面 下拉“組件”欄目條,選擇“應用程序服務器” 點擊“應用程序服務器”下的“…

hadoop臨時文件 jar包_hadoop之Mapper/reducer源碼分析之二

若當前JobClient (0.22 hadoop) 運行在YARN.則job提交任務運行在YARNRunnerHadoop Yarn 框架原理及運作機制主要步驟作業提交作業初始化資源申請與任務分配任務執行具體步驟在運行作業之前,Resource Manager和Node Manager都已經啟動,所以在上圖中&#…

ANDROID:SHOWASACTION="NEVER"是做什么用的?

原文地址:http://www.cnblogs.com/android-joker/p/4478491.html 點擊閱讀原文 --------------------------------------------------------- 安卓開發項目文件中有一個目錄叫做menu,里面有tybmain.xml item選項里有一句 android:showAsAction "…