零基础小白如何进行iOS系统学习?
入门后如何进阶,进而成为资深的iOS专家?
iOS开发者的能力图谱是怎么样的?
想要走向专家级别,需要怎样的知识体系?
网易阿里等互联网公司需要怎样的iOS人才?
……
这些问题恐怕是想要入行iOS或者初入行1-3年的开发同学经常碰到的,今天我们邀请到了网易移动技术团队负责人张平,从这五个问题的角度来为大家答疑解惑。

张平 | 网易移动技术团队负责人
多年浏览器内核、Java解释器研发经验;负责过多款APP和一些基础SDK的研发;热爱优秀的编程语言。
1
零基础小白如何进行iOS系统学习
首先,学习目标要明确;
其次,有了目标,要培养兴趣,经常给自己一些正面的反馈,比如对自己的进步进行鼓励,在前期小步快走;
再次,学技术最重要的一点就是多动手。
推荐书目:
《Objective-C基础教程 》
《iOS编程》
《iOS开发指南》
推荐两个开源的APP:SegmentFault、懒人笔记
2
基础入门后,如何进行高级进阶
2.1 原理和基础:掌握扎实的原理和基础是进阶的必要条件
首先是语言。 入门时候可能只要对语言看得懂,会写即可。但是在进阶阶段,看懂会写是远远不够的。
这个时候,编码规范就很重要,我们不能随心所欲的写,推荐书目《Effective Objective-C2.0》。
除此之外,我们还需熟练掌握Objective-C Runtime。我推荐的素材有http://opensource.apple.com/source/objc4/ ,这门语言比较好的是它开源,所以我们可以去看它的源码。第二是苹果的这篇文档Objective-C Runtime Programming Guide ,我们可以仔细去阅读。从我自身经历来看,对Objc_msgSend实现细节的理解程度很大程度上反映了我们对 Objective-C Runtime的掌握程度。再推荐大家一篇文档 The Swift Programming Language ,苹果官方的文档,大家可以反反复复去看。
2.2 iOS GUI学习
我听到有些人说GUI学习太简单了,我随便看看能刷几个页面就可。还会有这样一种说法,GUI的代码太难看了。
我个人十分重视GUI,我认为这是真正挑战的地方,因为这能真正反映我们的熟练程度,是否真正懂得其背后的设计原理。
APP Guide:
l View Programming guide
l View Controller Programming Guide
l Event Handling Guide
l Drawing and Printing Guide
l Core Animation Programming Guide
2.3 Xcode学习
工欲善其事,必先利其器。在我看来,Xcode就是这个器,因此需要十分重视。
Apple Guide:
| Xcode Overview
| Xcode Project Management Guide
关于Xcode的流程,我们需要清晰的知道Xcode编译、链接、打包的流程,配置和Xcodeconfig的操作。另外,还需知道Xcode管理多工程、多Target. 还需熟练使用cocoapods、plugin。当然,IIvm调试工具也是必不可少的。
2.4 网络
理解NSUPLConnection、NSURLSession、NSURLProtocol
Apple Guide:
| URL Loading System Programming Guide
| Introduction to CFNetwork Programming Guide
2.5 多线程
推荐书目《Objective-C高级编程ios与OS X多线程和内存管理》,这本书的特点是透彻,全面。
Apple Guide:
| Concurrency Programming Guide
| Threading Programming Guide
2.6 逆向安全(了解层面)
《iOS应用逆向工程》对我们去了解逆向这些事情和应用的保护是很有帮助的。
Apple Guide:
| Keychain Services Programming Guide
2.7 学习资源
| WWDC Session
| Objc.io
此外,优秀的开源库也值得我们学习,如:
| SDWebImage
| AFNetworking/Restkit
| Facebook的三个库:AsyncDisplayKit/pop/ReactNative
ReactiveCocoa
3
iOS能力清单
3.1 GUI
自定义UI、熟悉UI渲染机制
掌握基本排版机制,掌握AutoLayout
熟悉事件传递机制,自定义手势
掌握基本动画,动画原理
3.2 Controller
熟悉基本ViewController使用、transition
熟悉MVC等设计模式
3.3 熟悉常见网络库使用
熟悉NSURLConnectionNSURLSessionNSURLProtocolAFNetworking熟悉Cachecookie管理
3.4 熟悉Sqlite使用,熟悉常见ORM系统设计和实现,熟悉系统常用本地存储机制
熟悉CoreDatasqliteUserDefault
3.5 熟悉多线程消息传递,同步机制,线程池设计和实现
掌握NSOperation GCD Runloop 机制和实现
3.6 熟悉音频、视频基本概念,熟悉相关系统接口
熟悉拍照、录像等相关接口
3.7 编程语言
熟悉C/C++、Objective-C、Swift
3.8 性能优调
熟悉移动端常见性能问题和解决方案:主线程CPU密集操作,主线程IO操作,排版、渲染耗时
网络性能分析和调优(《Web性能权威指南》)
熟练使用Instrument进行性能调优
3.9 安全
熟悉常见iOS应用安全机制(keychain,codesign),熟悉常见应用数据保护机制
熟悉常见加解密算法
熟悉iOS逆向与安全
4
走向专家的知识体系
内功而非招式,更看重基础的掌握。 所以,我们需要加强自身实际的能力,主要包括:
l 数学基础
l 操作系统
l 程序的编译上,链接与加载,推荐《程序员的自我修养》
l ARM体系架构,推荐ARM体系结构与编程》
l 学习多范式的编程语言
l 设计模式
l 计算机网络
l 数据库
5
企业需要怎样的iOS人才
| 大公司更看重基础,成长性
| 技术热情
| 系统学习的能力
| 听说能力
| 敢于承担、敢于挑战
专属免费福利
网易云课堂iOS开发微专业体验课
网易云音乐资深iOS开发工程师亲自授课
课程视频+小组讨论+小作业+作业点评+免费直播
N管其下,教你100%学会iOS开发中的“UIView动画”

体验价超值原价:5元
iOS笔记粉丝价:免费!免费!免费!
↓↓课程免费码领取方式↓↓
Step1:扫描下图二维码,进入体验课学习QQ群
Step2:进群查看群公告,内附具体的兑换方式;
Step3:开始学习;
进群暗号:iOS笔记
了解更多网易云课堂iOS体验课详情,请戳“阅读原文”~返回搜狐,查看更多