美文网首页iOS
iOS高级进阶方向

iOS高级进阶方向

作者: 素还真人 | 来源:发表于2019-07-28 22:50 被阅读0次

    本文主要是对近几年了解到的iOS知识,做总结、进阶目标。

    目录

    1.苹果官方文档 & 新API

    2.iOS第三方库源码 & 实现原理

    3.iOS标配技能

    4.iOS多线程

    5.iOS架构 & 代码规范

    6.iOS工程化管理

    7.苹果官方Kit

    8.Runtime & Runloop

    9.iOS FFmpeg & Opencv原理

    10.iOS底层原理

    11.iOS App逆向

    12.iOS Swift13.本文没有提到的知识点

    14.明确自己的定位和路线

    推荐书籍 & 网站推荐

    苹果官网API搜索

    Head First iPhone/iPad开发

    iOS应用安全权威指南

    高性能iOS应用开发

    高级核心动画技巧

    2017蚂蚁金服AR框架

    京东应用架构设计

    王巍-Swift4.0

    SwifterTips (第四版)

    OS X与IOS内核编程

    OpenGL着色语言

    avfoundation秘籍

    CFNetwork-编程指南

    通过实现TableView来理解IOS编程

    七牛云直播技术分享

    本文单独针对iOS开发水平提升方面,有技术方面的遗漏还望各位积极回复.

    多的不说,只说两点:

    1.确实觉得自己水平实力低于平均水平,明显想提升自己实力的.

    2.如果有"这些技能工作当中用不到,学来干嘛?"这种想法,并不适合阅读本文.

    既然大家都是想提升实力,就不要老去思考工作当中用不用的到,每个人职能就那么点,为什么会分水平高低,还不是因为人家懂得多?心里没数?别心浮气躁的,踏踏实实的提高硬实力.

    iOS基础

    本文主要是为了补充iOS开发学习路线那篇文章,所以到达这一步,就暂定你已经会基本的操作,以及独立开发过项目了.

    苹果官方文档 & 新API

    苹果开发者官网有对每个API的解释,使用,介绍.

    使用百度"iOS开发"+ 空格 +"各个知识点" 来搜索学习各种自己不擅长的知识.例如:iOS开发 Runtime原理.

    iOS第三方库源码 & 实现原理

    我们平常经常使用第三方库,例如:AFNetworking,MJRefresh,YYKit,SDWebimage,SDAutoLayout,Masonry.

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

    AFNetworking是如何实现异步访问网络请求,如何处理你传给他的数据字典,在AFN内部进行了几层封装?

    MJRefresh的实现原理是什么?

    SDWebImage的缓存原理?

    YYKit针对于FPS是如何优化的?

    SDAutoLayout和Masonry的布局库原理有着怎么样的区别,其原理是依据什么进行布局的?谁的效率更高一点.

    还有很多的第三方库值得我们去学习.

    iOS标配技能

    交流

    首先,在公司日常的交流,要稳重不失礼节,出问题的时候,要针对问题提出解决方案,而不要带情绪.

    当有新的业务需求提出时,根据自己的实力,给出不同的业务方案.

    购物车

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

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

    支付

    有了购物车,就一定会有支付,熟悉支付宝,微信,银联,苹果支付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架构 & 代码规范

    iOS应用架构谈-By.Casa大

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

    苹果官方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目前已经4.0了,个人感觉本人会在Swift5.0进行学习吧,虽然很多项目没有用到Swift,但Swift确实是一个趋势,可以了解一下.

    本文没有提到的知识点

    崩溃日志分析

    移动端加解密

    数据结构 & 算法导论

    混合开发

    机器学习

    ARKit

    RAC

    iOS 工程化

    模块化开发

    组件化开发

    单元测试

    技术经理

    产品经理

    架构师

    阿里技术前沿

    跟随巨人的脚步

    代码设计能力

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

    工具设计能力

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

    工程规划能力

    抗风险

    成本

    回报

    总结

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

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

    相关文章

      网友评论

        本文标题:iOS高级进阶方向

        本文链接:https://www.haomeiwen.com/subject/ndymrctx.html