零基础小白如何进行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.2Controller
熟悉基本ViewController使用、transition
熟悉MVC等设计模式
3.3熟悉常见网络库使用
熟悉NSURLConnection, NSURLSession, NSURLProtocol, AFNetworking, 熟悉Cache, cookie管理
3.4熟悉Sqlite使用,熟悉常见ORM系统设计和实现,熟悉系统常用本地存储机制
熟悉CoreData, sqlite, UserDefault
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逆向与安全