本文主要是對近幾年了解到的iOS知識晾剖,做總結(jié)镶奉、進(jìn)階目標(biāo)是鬼。
目錄
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 Swift13.本文沒有提到的知識點(diǎn)
14.明確自己的定位和路線
推薦書籍 & 網(wǎng)站推薦
Head First iPhone/iPad開發(fā)
iOS應(yīng)用安全權(quán)威指南
高性能iOS應(yīng)用開發(fā)
高級核心動畫技巧
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ù)分享
本文單獨(dú)針對iOS開發(fā)水平提升方面,有技術(shù)方面的遺漏還望各位積極回復(fù).
多的不說,只說兩點(diǎn):
1.確實(shí)覺得自己水平實(shí)力低于平均水平,明顯想提升自己實(shí)力的.
2.如果有"這些技能工作當(dāng)中用不到,學(xué)來干嘛?"這種想法,并不適合閱讀本文.
既然大家都是想提升實(shí)力,就不要老去思考工作當(dāng)中用不用的到,每個人職能就那么點(diǎn),為什么會分水平高低,還不是因?yàn)槿思叶枚?心里沒數(shù)?別心浮氣躁的,踏踏實(shí)實(shí)的提高硬實(shí)力.
iOS基礎(chǔ)
本文主要是為了補(bǔ)充iOS開發(fā)學(xué)習(xí)路線那篇文章,所以到達(dá)這一步,就暫定你已經(jīng)會基本的操作,以及獨(dú)立開發(fā)過項(xiàng)目了.
蘋果官方文檔 & 新API
蘋果開發(fā)者官網(wǎng)有對每個API的解釋,使用,介紹.
使用百度"iOS開發(fā)"+ 空格 +"各個知識點(diǎn)" 來搜索學(xué)習(xí)各種自己不擅長的知識.例如:iOS開發(fā) Runtime原理.
iOS第三方庫源碼 & 實(shí)現(xiàn)原理
我們平常經(jīng)常使用第三方庫,例如:AFNetworking,MJRefresh,YYKit,SDWebimage,SDAutoLayout,Masonry.
那么你是否去查看其第三方庫是如何封裝的?
AFNetworking是如何實(shí)現(xiàn)異步訪問網(wǎng)絡(luò)請求,如何處理你傳給他的數(shù)據(jù)字典,在AFN內(nèi)部進(jìn)行了幾層封裝?
MJRefresh的實(shí)現(xiàn)原理是什么?
SDWebImage的緩存原理?
YYKit針對于FPS是如何優(yōu)化的?
SDAutoLayout和Masonry的布局庫原理有著怎么樣的區(qū)別,其原理是依據(jù)什么進(jìn)行布局的?誰的效率更高一點(diǎn).
還有很多的第三方庫值得我們?nèi)W(xué)習(xí).
iOS標(biāo)配技能
交流
首先,在公司日常的交流,要穩(wěn)重不失禮節(jié),出問題的時候,要針對問題提出解決方案,而不要帶情緒.
當(dāng)有新的業(yè)務(wù)需求提出時,根據(jù)自己的實(shí)力,給出不同的業(yè)務(wù)方案.
購物車
購物車可以說是在各個客戶端,最經(jīng)典的案例了,這是一個業(yè)務(wù)需求,也是涉及到增刪改查,異步處理等各種業(yè)務(wù)邏輯混雜于一身的業(yè)務(wù)需求.
一個健壯的購物車,可以說是必備的業(yè)務(wù)技能.和登錄注冊同理.
支付
有了購物車,就一定會有支付,熟悉支付寶,微信,銀聯(lián),蘋果支付IAP等各種支付平臺的接入,接入流程.
你可以沒做過,但你不能不知道,就比如支付寶當(dāng)中的加密算法RSA是屬于什么加密.他是如何驗(yàn)證的.公鑰和私鑰是如何在APP和服務(wù)端存儲驗(yàn)證的?
藍(lán)牙
藍(lán)牙這個就不細(xì)說了,很簡單,自己寫個DEMO,不要覺得自己沒做過就很難,寫一個連接Demo,沒那么難.
實(shí)際藍(lán)牙項(xiàng)目中,你可以根據(jù)業(yè)務(wù)需求,選擇較為健壯,易接入的藍(lán)牙設(shè)備.最好可以提供接入手冊的那種,接入其實(shí)很簡單,調(diào)試費(fèi)勁罷了.
攝像頭
同理藍(lán)牙,攝像頭需要選擇提供成型SDK的廠家,除非你公司實(shí)力非常強(qiáng)大,肯購買提供底層庫讓你自己做SDK的攝像頭.愿意投入時間成本去開發(fā)SDK.
3DTouch
寫一個Demo練習(xí)一下,很簡單,必備技能,但一般不是每個應(yīng)用都做.
直播
直播現(xiàn)在中小型公司普遍采用第三方直播平臺,不管你是否做過,你可以先去 騰訊云,七牛云,阿里云 開發(fā)平臺進(jìn)行學(xué)習(xí),技術(shù)文檔是開放的.
你哪怕知識看一遍,也比不看的要強(qiáng)的多.可以接入Demo測試學(xué)習(xí)一下.
當(dāng)然,有些公司不想接入第三方,也有開源的框架可以自己做直播平臺,這就需要三端連調(diào),一同處理需求了.
RTMP推流
例如IJKPlayer FFmpeg,包括直播原理,你要懂.
直播的視頻是遵循什么協(xié)議一個個將視頻包分發(fā)到客戶端,RTMP協(xié)議的優(yōu)缺點(diǎn)等.
視頻處理
視頻處理,例如轉(zhuǎn)碼啊,旋轉(zhuǎn),編碼.
不同格式的處理,視頻大小的處理,為什么QQ和微信的小視頻可以做到超級壓縮?
如何對視頻進(jìn)行濾鏡處理,類似抖音那樣.
圖片渲染&濾鏡
GPUIImage是一個集濾鏡,圖像處理的框架,可以學(xué)習(xí)一下,如何添加濾鏡,處理圖片.
Socket & XMPP
即時聊天,也是當(dāng)下流行的技術(shù),每個APP幾乎都少不了要有一個聊天功能,即使沒有,也會涉及到客服,反饋等功能.
那么即時聊天遵循什么協(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ù),本人沒接觸過,所以不贅述,大家自己了解一下,一些公司會用這個開發(fā)App.
Git & SVN 項(xiàng)目版本控制
公司當(dāng)中一般都有后端開發(fā)工程師 或者DBA創(chuàng)建一個屬于本公司局域網(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ī)范
可以仔細(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)閭€人水平原因,目前只有整理好的筆記,暫時不方便對此進(jìn)行總結(jié).
iOS FFmpeg & Opencv原理
FFmpeg和Opencv底層原理是什么,是什么支撐了這個強(qiáng)大的視頻處理庫.
iOS底層原理
結(jié)合Runtime機(jī)制深入了解Objective-C對象的本質(zhì)和消息機(jī)制,其方法和對象在編譯和運(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了,個人感覺本人會在Swift5.0進(jìn)行學(xué)習(xí)吧,雖然很多項(xiàng)目沒有用到Swift,但Swift確實(shí)是一個趨勢,可以了解一下.
本文沒有提到的知識點(diǎn)
崩潰日志分析
移動端加解密
數(shù)據(jù)結(jié)構(gòu) & 算法導(dǎo)論
混合開發(fā)
機(jī)器學(xué)習(xí)
ARKit
RAC
iOS 工程化
模塊化開發(fā)
組件化開發(fā)
單元測試
技術(shù)經(jīng)理
產(chǎn)品經(jīng)理
架構(gòu)師
阿里技術(shù)前沿
跟隨巨人的腳步
代碼設(shè)計(jì)能力
代碼設(shè)計(jì)能力主要體現(xiàn)在如何設(shè)計(jì)代碼却特,設(shè)計(jì)模式的核心在于六大原則扶供,而不是具體的某些設(shè)計(jì)模式。
工具設(shè)計(jì)能力
工具設(shè)計(jì)能力在于使用工具的過程中裂明,了解工具的實(shí)現(xiàn)椿浓,嘗試去設(shè)計(jì)更適合工程的工具,這部分需要大量的代碼積累闽晦。另一方面由于工具是可復(fù)用的扳碍,對代碼設(shè)計(jì)能力的要求是有的,所以屬于更高.
工程規(guī)劃能力
抗風(fēng)險(xiǎn)
成本
回報(bào)
總結(jié)
確實(shí),作為一個開發(fā)工程師,應(yīng)該去縱觀整個工程,而不是僅僅局限于自己的工作棧,否則不可能獲得質(zhì)的提升.
總之,希望大家制定自己的路線進(jìn)行努力,只要不原地踏步.