The advanced road to iOS development, break the mediocrity, and eliminate the elimination!

Hope you are! After all, IT is such an industry where technology is constantly updated and its own knowledge system is constantly updated. Without the input of new knowledge points, there will be no output beyond the newcomers.

So as an iOS developer, how should you continue to learn to truly advance to a senior talent?

table of Contents
1. Apple official documents & new API
2. iOS third-party library source code & implementation principle
3. iOS standard skills
4.iOS multithreading
5. iOS Architecture & Code Specification
6. iOS engineering management
7. Apple's official Kit
8.Runtime & Runloop
9.iOS FFmpeg & Opencv principle
10. The underlying principle of iOS
11.iOS App reverse engineering
12.iOS Swift
13. Knowledge points not mentioned in this article
14. Clear your own positioning and route

Recommended books & website recommendations

Apple official website API search

Head First iPhone/iPad Development
iOS Application Security Authority Guide
High-performance iOS Application Development
Advanced Core Animation Skills
2017 Ant Financial AR Framework
Jingdong Application Architecture Design
Wang Wei-Swift4.0
SwifterTips (Fourth Edition)
OS X and IOS kernel programming
OpenGL coloring language
avfoundation Cheats
CFNetwork- programming Guide
to understand the IOS program by implementing TableView
seven live cattle cloud technology sharing


Know Before You Read

The previous iOS development route was completed in September last year, and the underlying part and the reverse part were deleted. Because I am still studying, it is not convenient to make a one-sided summary of the unknown area, including this article. The purpose is to share with you. If it is the knowledge point that I will learn in the process of iOS advancement.

This article focuses on the improvement of the iOS development level. There are technical omissions and I hope you will actively respond.

I don’t want to talk more, just say two points:
1. I really feel that my level of strength is lower than the average level, and I obviously want to improve my strength.
2. If there is "These skills are not used in the work, why do you learn?" Ideas, not suitable for reading this article.

Since everyone wants to improve their strength, don’t always think about what you don’t need in your work. Everyone’s function is so small. Why are they divided into different levels? Isn’t it because they know a lot? Improve hard power steadily.


iOS basics

This article is mainly to supplement the article on the iOS development learning route, so at this step, it is tentatively determined that you will already have basic operations and independently developed projects.


Apple official documents & new API

The official Apple developer website has an explanation, use, and introduction of each API.

Use Baidu "iOS development" + space + "knowledge points" to search and learn all kinds of knowledge that you are not good at. For example: iOS development Runtime principle.


iOS third-party library source code & implementation principle

We usually use third-party libraries, such as: AFNetworking, MJRefresh, YYKit, SDWebimage, SDAutoLayout, Masonry.

So do you check how the third-party library is packaged?

How does AFNetworking implement asynchronous access to the network request, how to deal with the data dictionary you passed to him, and how many layers of encapsulation are carried out inside AFN?

What is the implementation principle of
MJRefresh ? The caching principle of
SDWebImage ? How is YYKit optimized for FPS?
What is the difference between the principle of SDAutoLayout and Masonry's layout library? What is the principle of layout? Who is more efficient?
There are many third-party libraries that are worth learning.


iOS standard skills

communicate with

First of all, in the company's daily communication, we must be prudent and courteous, and when problems arise, we must propose solutions to the problems, rather than emotional.

When new business needs are proposed, different business plans are given according to their own strength.

shopping cart

购物车可以说是在各个客户端,最经典的案例了,这是一个业务需求,也是涉及到增删改查,异步处理等各种业务逻辑混杂于一身的业务需求.

一个健壮的购物车,可以说是必备的业务技能.和登录注册同理.

支付

有了购物车,就一定会有支付,熟悉支付宝,微信,银联,苹果支付IAP等各种支付平台的接入,接入流程.

你可以没做过,但你不能不知道,就比如支付宝当中的加密算法RSA是属于什么加密.他是如何验证的.公钥和私钥是如何在APP和服务端存储验证的?

蓝牙

蓝牙这个就不细说了,很简单,自己写个DEMO,不要觉得自己没做过就很难,写一个连接Demo,没那么难.

实际蓝牙项目中,你可以根据业务需求,选择较为健壮,易接入的蓝牙设备.最好可以提供接入手册的那种,接入其实很简单,调试费劲罢了.

摄像头

同理蓝牙,摄像头需要选择提供成型SDK的厂家,除非你公司实力非常强大,肯购买提供底层库让你自己做SDK的摄像头.愿意投入时间成本去开发SDK.

3DTouch

写一个Demo练习一下,很简单,必备技能,但一般不是每个应用都做.

直播

直播现在中小型公司普遍采用第三方直播平台,不管你是否做过,你可以先去 腾讯云,七牛云,阿里云 开发平台进行学习,技术文档是开放的.

你哪怕知识看一遍,也比不看的要强的多.可以接入Demo测试学习一下.

当然,有些公司不想接入第三方,也有开源的框架可以自己做直播平台,这就需要三端连调,一同处理需求了.

RTMP推流

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

直播的视频是遵循什么协议一个个将视频包分发到客户端,RTMP协议的优缺点等.

视频处理

视频处理,例如转码啊,旋转,编码.

不同格式的处理,视频大小的处理,为什么QQ和微信的小视频可以做到超级压缩?

如何对视频进行滤镜处理,类似抖音那样.

图片渲染&滤镜

GPUIImage是一个集滤镜,图像处理的框架,可以学习一下,如何添加滤镜,处理图片.

Socket & XMPP

即时聊天,也是当下流行的技术,每个APP几乎都少不了要有一个聊天功能,即使没有,也会涉及到客服,反馈等功能.

那么即时聊天遵循什么协议,用什么来做的呢?可以了解一下iOS当中如何用Socket 实现简易聊天,或者使用XMPP协议实现聊天?

RN开发 & JavaScript

React Native开发,由Facebook开源,React Native使你能够在Javascript和React的基础上获得完全一致的开发体验,构建世界一流的原生APP。

这是一门新技术,本人没接触过,所以不赘述,大家自己了解一下,一些公司会用这个开发App.

Git & SVN 项目版本控制

公司当中一般都有后端开发工程师 或者DBA创建一个属于本公司局域网的Git本地管理仓库.

如果你是单人开发iOS,那就需要掌握最基本的版本控制,

如果你在公司是团队开发,还要掌握冲突处理的技能

优雅的开发

[如何优雅的使用Mac进行开发]稍后更新


iOS多线程

GCD、NSOperation、NSThread各种灵活运用和嵌套


iOS架构 & 代码规范

可以仔细学习这篇文章,养成良好的代码规范.


苹果官方Kit

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

可以尝试了解一下上面的各种kit官方API,因为有可能新的业务需求就是官方API调用的事就解决了.


Runtime & Runloop

Runtime和Runloop的原理和机制,以及如何使用,大家可以深入了解一下,因为个人水平原因,目前只有整理好的笔记,暂时不方便对此进行总结.


iOS FFmpeg & Opencv原理

FFmpeg和Opencv底层原理是什么,是什么支撑了这个强大的视频处理库.


iOS底层原理

结合Runtime机制深入了解Objective-C对象的本质和消息机制,其方法和对象在编译和运行过程中分别是什么状态.


iOS App逆向

App逆向目前本人也没有深入理解,不知道在工作当中如何应用,确实让我了解到iOS开发项目中之外的东西.

例如,客户端和服务器概念,SSH登录,以及各大有名的APP是如何架构的(推理一下).


iOS Swift

Swift目前已经5.3了,本人是在Swift5.0进行学习的,虽然很多项目没有用到Swift,但Swift确实是一个趋势,可以了解一下.


本文没有提到的知识点

  • 崩溃日志分析
  • 移动端加解密
  • 数据结构 & 算法导论
  • 混合开发
  • 机器学习
  • ARKit
  • RAC
  • iOS 工程化
  • 模块化开发
  • 组件化开发
  • 单元测试
  • 技术经理
  • 产品经理
  • 架构师
  • 阿里技术前沿
  • 跟随巨人的脚步

iOS进阶概念 By.SindriLin

本人尚在学习阶段,但我一直想传达一个积极向上的想法,以及个人的学习思路.因为水平欠缺,在发表文章之余,我结识了很多iOS的前辈,与前辈交流了本人的想法.

前辈告诉我,进阶不能仅仅局限于iOS开发,而是要从工程的角度来看待开发工程师进阶这个说法.

代码设计能力

代码设计能力主要体现在如何设计代码,设计模式的核心在于六大原则,而不是具体的某些设计模式。

工具设计能力

工具设计能力在于使用工具的过程中,了解工具的实现,尝试去设计更适合工程的工具,这部分需要大量的代码积累。另一方面由于工具是可复用的,对代码设计能力的要求是有的,所以属于更高.

工程规划能力

  • 抗风险
  • 成本
  • 回报

总结

确实,作为一个开发工程师,应该去纵观整个工程,而不是仅仅局限于自己的工作栈,否则不可能获得质的提升.

总之,希望大家制定自己的路线进行努力,只要不原地踏步.


明确自己的定位和路线

和同事有一天聊起了开发水平如何分辨,初中高级开发工程师的区别大致就是:使用第三方库,改第三方库,创造第三方库.

最后推荐个我的iOS交流群:642 363 427 有一个共同的圈子很重要,结识人脉!里面都是iOS开发,全栈发展,欢迎入驻,共同进步!(群内会免费提供一些群主收藏的免费学习书籍资料以及整理好的几百道面试题和答案文档!)

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


Guess you like

Origin blog.51cto.com/15010671/2674579