淺談iOS進(jìn)階路線

前言

這里筑夢(mèng)師,是一名正在努力學(xué)習(xí)的iOS開發(fā)工程師,目前致力于全棧方向的學(xué)習(xí),希望可以和大家一起交流技術(shù),共同進(jìn)步,用簡書記錄下自己的學(xué)習(xí)歷程.

個(gè)人學(xué)習(xí)方法分享
iOS開發(fā)學(xué)習(xí)路線

本文閱讀建議
1.一定要辯證的看待本文.
2.本文僅代表個(gè)人片面觀點(diǎn),如有不同觀點(diǎn),還往及時(shí)指出.
3.本文只闡述學(xué)習(xí)路線和學(xué)習(xí)當(dāng)中的重點(diǎn)問題.需要讀者自己使用百度進(jìn)行拓展學(xué)習(xí).
4.本文所表達(dá)觀點(diǎn)并不是最終觀點(diǎn),還會(huì)更新,因?yàn)楸救诉€在學(xué)習(xí)過程中,有什么遺漏或錯(cuò)誤還望各位指出.
5.覺得哪里不妥請(qǐng)?jiān)谠u(píng)論留下建議~
6.覺得還行的話就點(diǎn)個(gè)小心心鼓勵(lì)下我吧~

目錄
1.蘋果官方文檔 & 新API
2.iOS第三方庫源碼 & 實(shí)現(xiàn)原理
3.iOS標(biāo)配技能
4.iOS多線程
5.iOS架構(gòu) & 代碼規(guī)范
6.iOS工程化管理
7.蘋果官方Kit
8.Runtime & Runloop
9.iOS FFmpeg & Opencv原理
10.iOS底層原理
11.iOS App逆向
12.iOS Swift
13.本文沒有提到的知識(shí)點(diǎn)
14.明確自己的定位和路線

推薦書籍 & 網(wǎng)站推薦

蘋果官網(wǎng)API搜索

Head First iPhone/iPad開發(fā)
iOS應(yīng)用安全權(quán)威指南
高性能iOS應(yīng)用開發(fā)
高級(jí)核心動(dòng)畫技巧
2017螞蟻金服AR框架
京東應(yīng)用架構(gòu)設(shè)計(jì)
王巍-Swift4.0
SwifterTips (第四版)
OS X與IOS內(nèi)核編程
OpenGL著色語言
avfoundation秘籍
CFNetwork-編程指南
通過實(shí)現(xiàn)TableView來理解IOS編程
七牛云直播技術(shù)分享


閱讀前須知

之前那篇iOS開發(fā)路線是去年9月份做好的,刪除了底層部分和逆向部分,因?yàn)楸救松性趯W(xué)習(xí)之中,不方便對(duì)未知領(lǐng)域做片面總結(jié),包括本文,其目的是為了向大家分享,如果是我在進(jìn)行iOS進(jìn)階過程中會(huì)去學(xué)習(xí)的知識(shí)點(diǎn).

本文單獨(dú)針對(duì)iOS開發(fā)水平提升方面,有技術(shù)方面的遺漏還望各位積極回復(fù).

多的不說,只說兩點(diǎn):
1.確實(shí)覺得自己水平實(shí)力低于平均水平,明顯想提升自己實(shí)力的.
2.如果有"這些技能工作當(dāng)中用不到,學(xué)來干嘛?"這種想法,并不適合閱讀本文.

既然大家都是想提升實(shí)力,就不要老去思考工作當(dāng)中用不用的到,每個(gè)人職能就那么點(diǎn),為什么會(huì)分水平高低,還不是因?yàn)槿思叶枚?心里沒數(shù)?別心浮氣躁的,踏踏實(shí)實(shí)的提高硬實(shí)力.


iOS基礎(chǔ)

本文主要是為了補(bǔ)充iOS開發(fā)學(xué)習(xí)路線那篇文章,所以到達(dá)這一步,就暫定你已經(jīng)會(huì)基本的操作,以及獨(dú)立開發(fā)過項(xiàng)目了.


蘋果官方文檔 & 新API

蘋果開發(fā)者官網(wǎng)有對(duì)每個(gè)API的解釋,使用,介紹.

使用百度"iOS開發(fā)"+ 空格 +"各個(gè)知識(shí)點(diǎn)" 來搜索學(xué)習(xí)各種自己不擅長的知識(shí).例如:iOS開發(fā) Runtime原理.


iOS第三方庫源碼 & 實(shí)現(xiàn)原理

我們平常經(jīng)常使用第三方庫,例如:AFNetworking,MJRefresh,YYKit,SDWebimage,SDAutoLayout,Masonry.

那么你是否去查看其第三方庫是如何封裝的?

AFNetworking是如何實(shí)現(xiàn)異步訪問網(wǎng)絡(luò)請(qǐng)求,如何處理你傳給他的數(shù)據(jù)字典,在AFN內(nèi)部進(jìn)行了幾層封裝?

MJRefresh的實(shí)現(xiàn)原理是什么?
SDWebImage的緩存原理?
YYKit針對(duì)于FPS是如何優(yōu)化的?
SDAutoLayout和Masonry的布局庫原理有著怎么樣的區(qū)別,其原理是依據(jù)什么進(jìn)行布局的?誰的效率更高一點(diǎn).
還有很多的第三方庫值得我們?nèi)W(xué)習(xí).


iOS標(biāo)配技能

交流

首先,在公司日常的交流,要穩(wěn)重不失禮節(jié),出問題的時(shí)候,要針對(duì)問題提出解決方案,而不要帶情緒.

當(dāng)有新的業(yè)務(wù)需求提出時(shí),根據(jù)自己的實(shí)力,給出不同的業(yè)務(wù)方案.

購物車

購物車可以說是在各個(gè)客戶端,最經(jīng)典的案例了,這是一個(gè)業(yè)務(wù)需求,也是涉及到增刪改查,異步處理等各種業(yè)務(wù)邏輯混雜于一身的業(yè)務(wù)需求.

一個(gè)健壯的購物車,可以說是必備的業(yè)務(wù)技能.和登錄注冊(cè)同理.

支付

有了購物車,就一定會(huì)有支付,熟悉支付寶,微信,銀聯(lián),蘋果支付IAP等各種支付平臺(tái)的接入,接入流程.

你可以沒做過,但你不能不知道,就比如支付寶當(dāng)中的加密算法RSA是屬于什么加密.他是如何驗(yàn)證的.公鑰和私鑰是如何在APP和服務(wù)端存儲(chǔ)驗(yàn)證的?

藍(lán)牙

藍(lán)牙這個(gè)就不細(xì)說了,很簡單,自己寫個(gè)DEMO,不要覺得自己沒做過就很難,寫一個(gè)連接Demo,沒那么難.

實(shí)際藍(lán)牙項(xiàng)目中,你可以根據(jù)業(yè)務(wù)需求,選擇較為健壯,易接入的藍(lán)牙設(shè)備.最好可以提供接入手冊(cè)的那種,接入其實(shí)很簡單,調(diào)試費(fèi)勁罷了.

攝像頭

同理藍(lán)牙,攝像頭需要選擇提供成型SDK的廠家,除非你公司實(shí)力非常強(qiáng)大,肯購買提供底層庫讓你自己做SDK的攝像頭.愿意投入時(shí)間成本去開發(fā)SDK.

3DTouch

寫一個(gè)Demo練習(xí)一下,很簡單,必備技能,但一般不是每個(gè)應(yīng)用都做.

直播

直播現(xiàn)在中小型公司普遍采用第三方直播平臺(tái),不管你是否做過,你可以先去 騰訊云,七牛云,阿里云 開發(fā)平臺(tái)進(jìn)行學(xué)習(xí),技術(shù)文檔是開放的.

你哪怕知識(shí)看一遍,也比不看的要強(qiáng)的多.可以接入Demo測(cè)試學(xué)習(xí)一下.

當(dāng)然,有些公司不想接入第三方,也有開源的框架可以自己做直播平臺(tái),這就需要三端連調(diào),一同處理需求了.

RTMP推流

例如IJKPlayer FFmpeg,包括直播原理,你要懂.

直播的視頻是遵循什么協(xié)議一個(gè)個(gè)將視頻包分發(fā)到客戶端,RTMP協(xié)議的優(yōu)缺點(diǎn)等.

視頻處理

視頻處理,例如轉(zhuǎn)碼啊,旋轉(zhuǎn),編碼.

不同格式的處理,視頻大小的處理,為什么QQ和微信的小視頻可以做到超級(jí)壓縮?

如何對(duì)視頻進(jìn)行濾鏡處理,類似抖音那樣.

圖片渲染&濾鏡

GPUIImage是一個(gè)集濾鏡,圖像處理的框架,可以學(xué)習(xí)一下,如何添加濾鏡,處理圖片.

Socket & XMPP

即時(shí)聊天,也是當(dāng)下流行的技術(shù),每個(gè)APP幾乎都少不了要有一個(gè)聊天功能,即使沒有,也會(huì)涉及到客服,反饋等功能.

那么即時(shí)聊天遵循什么協(xié)議,用什么來做的呢?可以了解一下iOS當(dāng)中如何用Socket 實(shí)現(xiàn)簡易聊天,或者使用XMPP協(xié)議實(shí)現(xiàn)聊天?

RN開發(fā) & JavaScript

React Native開發(fā),由Facebook開源,React Native使你能夠在Javascript和React的基礎(chǔ)上獲得完全一致的開發(fā)體驗(yàn),構(gòu)建世界一流的原生APP。

這是一門新技術(shù),本人沒接觸過,所以不贅述,大家自己了解一下,一些公司會(huì)用這個(gè)開發(fā)App.

Git & SVN 項(xiàng)目版本控制

公司當(dāng)中一般都有后端開發(fā)工程師 或者DBA創(chuàng)建一個(gè)屬于本公司局域網(wǎng)的Git本地管理倉庫.

如果你是單人開發(fā)iOS,那就需要掌握最基本的版本控制,

如果你在公司是團(tuán)隊(duì)開發(fā),還要掌握沖突處理的技能

優(yōu)雅的開發(fā)

[如何優(yōu)雅的使用Mac進(jìn)行開發(fā)]稍后更新


iOS多線程

GCD、NSOperation、NSThread各種靈活運(yùn)用和嵌套


iOS架構(gòu) & 代碼規(guī)范

iOS應(yīng)用架構(gòu)談-By.Casa大
可以仔細(xì)學(xué)習(xí)這篇文章,養(yǎng)成良好的代碼規(guī)范.


蘋果官方Kit

  • ARKit.
  • SiriKit
  • HealthKit
  • HomeKit
  • SearchKit
  • IOKit
  • PDFKit
  • CloudKit
  • GameplayKit
  • SpriteKit
  • SceneKit
  • MusicKit
  • ResearchKit
  • MapKit
  • StoreKit
  • AVKit

可以嘗試了解一下上面的各種kit官方API,因?yàn)橛锌赡苄碌臉I(yè)務(wù)需求就是官方API調(diào)用的事就解決了.


Runtime & Runloop

Runtime和Runloop的原理和機(jī)制,以及如何使用,大家可以深入了解一下,因?yàn)閭€(gè)人水平原因,目前只有整理好的筆記,暫時(shí)不方便對(duì)此進(jìn)行總結(jié).


iOS FFmpeg & Opencv原理

FFmpeg和Opencv底層原理是什么,是什么支撐了這個(gè)強(qiáng)大的視頻處理庫.


iOS底層原理

結(jié)合Runtime機(jī)制深入了解Objective-C對(duì)象的本質(zhì)和消息機(jī)制,其方法和對(duì)象在編譯和運(yùn)行過程中分別是什么狀態(tài).


iOS App逆向

App逆向目前本人也沒有深入理解,不知道在工作當(dāng)中如何應(yīng)用,確實(shí)讓我了解到iOS開發(fā)項(xiàng)目中之外的東西.

例如,客戶端和服務(wù)器概念,SSH登錄,以及各大有名的APP是如何架構(gòu)的(推理一下).


iOS Swift

Swift目前已經(jīng)4.0了,個(gè)人感覺本人會(huì)在Swift5.0進(jìn)行學(xué)習(xí)吧,雖然很多項(xiàng)目沒有用到Swift,但Swift確實(shí)是一個(gè)趨勢(shì),可以了解一下.


本文沒有提到的知識(shí)點(diǎn)

  • 崩潰日志分析
  • 移動(dòng)端加解密
  • 數(shù)據(jù)結(jié)構(gòu) & 算法導(dǎo)論
  • 混合開發(fā)
  • 機(jī)器學(xué)習(xí)
  • ARKit
  • RAC
  • iOS 工程化
  • 模塊化開發(fā)
  • 組件化開發(fā)
  • 單元測(cè)試
  • 技術(shù)經(jīng)理
  • 產(chǎn)品經(jīng)理
  • 架構(gòu)師
  • 阿里技術(shù)前沿
  • 跟隨巨人的腳步

iOS進(jìn)階概念 By.SindriLin

本人尚在學(xué)習(xí)階段,但我一直想傳達(dá)一個(gè)積極向上的想法,以及個(gè)人的學(xué)習(xí)思路.因?yàn)樗角啡?在發(fā)表文章之余,我結(jié)識(shí)了SindriLin前輩,與前輩交流了本人的想法.

SindriLin博客
SindriLin簡書

前輩告訴我,進(jìn)階不能僅僅局限于iOS開發(fā),而是要從工程的角度來看待開發(fā)工程師進(jìn)階這個(gè)說法.

代碼設(shè)計(jì)能力

代碼設(shè)計(jì)能力主要體現(xiàn)在如何設(shè)計(jì)代碼,設(shè)計(jì)模式的核心在于六大原則,而不是具體的某些設(shè)計(jì)模式。

工具設(shè)計(jì)能力

工具設(shè)計(jì)能力在于使用工具的過程中,了解工具的實(shí)現(xiàn),嘗試去設(shè)計(jì)更適合工程的工具,這部分需要大量的代碼積累。另一方面由于工具是可復(fù)用的,對(duì)代碼設(shè)計(jì)能力的要求是有的,所以屬于更高.

工程規(guī)劃能力

  • 抗風(fēng)險(xiǎn)
  • 成本
  • 回報(bào)

總結(jié)

確實(shí),作為一個(gè)開發(fā)工程師,應(yīng)該去縱觀整個(gè)工程,而不是僅僅局限于自己的工作棧,否則不可能獲得質(zhì)的提升.

總之,希望大家制定自己的路線進(jìn)行努力,只要不原地踏步.


明確自己的定位和路線

和同事阿振有一天聊起了開發(fā)水平如何分辨,初中高級(jí)開發(fā)工程師的區(qū)別大致就是:使用第三方庫,改第三方庫,創(chuàng)造第三方庫.

推薦看一下阿里分享的技術(shù)圖冊(cè),你就會(huì)發(fā)現(xiàn),阿里研究的技術(shù)正在世界的前沿,學(xué)無止境.

努力吧,美好的生活在向你招手~


結(jié)束語

如果您對(duì)這篇文章有什么意見或者建議,請(qǐng)?jiān)u論與我討論.
如果您覺得還不錯(cuò)的話~可以點(diǎn)個(gè)喜歡鼓勵(lì)我哦.
如果您想和我一起學(xué)習(xí),請(qǐng)毫不吝嗇的私信我吧~
介個(gè)是我的個(gè)人博客,歡迎參觀哦~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容