淺談iOS進階路線

前言

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

個人學習方法分享
iOS開發(fā)學習路線

本文閱讀建議
1.一定要辯證的看待本文.
2.本文僅代表個人片面觀點,如有不同觀點,還往及時指出.
3.本文只闡述學習路線和學習當中的重點問題.需要讀者自己使用百度進行拓展學習.
4.本文所表達觀點并不是最終觀點,還會更新,因為本人還在學習過程中,有什么遺漏或錯誤還望各位指出.
5.覺得哪里不妥請在評論留下建議~
6.覺得還行的話就點個小心心鼓勵下我吧~

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

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

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

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


閱讀前須知

之前那篇iOS開發(fā)路線是去年9月份做好的,刪除了底層部分和逆向部分,因為本人尚在學習之中,不方便對未知領域做片面總結,包括本文,其目的是為了向大家分享,如果是我在進行iOS進階過程中會去學習的知識點.

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

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

既然大家都是想提升實力,就不要老去思考工作當中用不用的到,每個人職能就那么點,為什么會分水平高低,還不是因為人家懂得多?心里沒數(shù)?別心浮氣躁的,踏踏實實的提高硬實力.


iOS基礎

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


蘋果官方文檔 & 新API

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

使用百度"iOS開發(fā)"+ 空格 +"各個知識點" 來搜索學習各種自己不擅長的知識.例如:iOS開發(fā) Runtime原理.


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

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

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

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

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


iOS標配技能

交流

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

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

購物車

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

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

支付

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

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

藍牙

藍牙這個就不細說了,很簡單,自己寫個DEMO,不要覺得自己沒做過就很難,寫一個連接Demo,沒那么難.

實際藍牙項目中,你可以根據(jù)業(yè)務需求,選擇較為健壯,易接入的藍牙設備.最好可以提供接入手冊的那種,接入其實很簡單,調試費勁罷了.

攝像頭

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

3DTouch

寫一個Demo練習一下,很簡單,必備技能,但一般不是每個應用都做.

直播

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

你哪怕知識看一遍,也比不看的要強的多.可以接入Demo測試學習一下.

當然,有些公司不想接入第三方,也有開源的框架可以自己做直播平臺,這就需要三端連調,一同處理需求了.

RTMP推流

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

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

視頻處理

視頻處理,例如轉碼啊,旋轉,編碼.

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

如何對視頻進行濾鏡處理,類似抖音那樣.

圖片渲染&濾鏡

GPUIImage是一個集濾鏡,圖像處理的框架,可以學習一下,如何添加濾鏡,處理圖片.

Socket & XMPP

即時聊天,也是當下流行的技術,每個APP幾乎都少不了要有一個聊天功能,即使沒有,也會涉及到客服,反饋等功能.

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

RN開發(fā) & JavaScript

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

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

Git & SVN 項目版本控制

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

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

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

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

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


iOS多線程

GCD、NSOperation、NSThread各種靈活運用和嵌套


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

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


蘋果官方Kit

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

可以嘗試了解一下上面的各種kit官方API,因為有可能新的業(yè)務需求就是官方API調用的事就解決了.


Runtime & Runloop

Runtime和Runloop的原理和機制,以及如何使用,大家可以深入了解一下,因為個人水平原因,目前只有整理好的筆記,暫時不方便對此進行總結.


iOS FFmpeg & Opencv原理

FFmpeg和Opencv底層原理是什么,是什么支撐了這個強大的視頻處理庫.


iOS底層原理

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


iOS App逆向

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

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


iOS Swift

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


本文沒有提到的知識點

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

iOS進階概念 By.SindriLin

本人尚在學習階段,但我一直想傳達一個積極向上的想法,以及個人的學習思路.因為水平欠缺,在發(fā)表文章之余,我結識了SindriLin前輩,與前輩交流了本人的想法.

SindriLin博客
SindriLin簡書

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

代碼設計能力

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

工具設計能力

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

工程規(guī)劃能力

  • 抗風險
  • 成本
  • 回報

總結

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

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


明確自己的定位和路線

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

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

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


結束語

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

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容