好久没有写过博客了。工作一忙就各种放一边,这阵子闲下来也没好好整理一下。抱着“Right Now”的想法拿起键盘就啪嗒啪嗒赶紧写下来再说。开始转行做iOS开发时,由于身边的人很少做iOS的自己本身也是菜鸟什么都不懂,一路摸打滚爬过来一开始也是碰到很多坑。从开始学习做个小项目后去小公司当个实习生攒攒经验,出来后在一个小创业公司做Self-Manager-.-||,那时候学的多不过开发过程还是有挺多不规范的,然后到顶个不错的头衔去大公司打磨学习(打杂T_T),整个过程也是曲折,凭着厚脸皮也算学到一些。看到网上这些资料也不是很多,大公司内部的培训资料比较完整系统但也很少会公开。所以这篇文章以及接下来几篇文章主要是针对刚入门的iOS开发者,根据自己这些年的开发经验讲一下iOS开发的大致学习路线,算是一点建议吧,虽然我也不是大神,不过也希望能给新手们带来点小帮助哈哈哈。写的不是很全但思路应该是没问题的,有见解的欢迎补全或更正。
初阶
基础
- C语言基本语法、Objective-C基本语法
- 面向对象特性(类、对象、继承、多态、动态类型、动态绑定)
- 协议(Protocol)与分类(Category)
- KVO、Delegate、Notification、Block的简单使用
- 基础内存管理、ARC、属性关键字的使用
数据
- 容器类(NSData/NSMutableData、NSArray/NSMutableArray、NSSet/NSMutableSet、NSString/NSMutableString、NSDictionary/NSMutableDictionary)
- 可持续永久存储(沙盒机制、序列化、Plist文件、文件管理、NSUserDefaults)
- JSON/XML格式解析
- 网络处理(Http协议、NSURLConnection、NSURLSession、NSURL、NSURLRequest、NSURLResponse等)
UI
- UIKit的类与结构
- UIView、UIWindow、UIApplication(使用与生命周期)
- 基础控件(UIButton、UILabel、UIImageView、UITextField、UITextView、UITableView、UISwitch、UICollectionView、UIScrollView、Cell等)
- 基础控制器(UIViewController、UITableViewController、UICollectionViewController、UIAlertViewController(iOS8.0以下是UIAlertView)
- xib文件、storyboard、Autolayout
- 事件的传递与响应(UITouch、UIEvent、UIGestureRecognizer)
- 绘图与动画(CALayer、UIBezierPath、基础动画[UIView animate…])
第三方库
使用AFNetworking、SDWebImage、MJRefresh等
工具
- 调试分析工具Instrument
- 版本管理工具Git/SVN
- 依赖管理工具CocoaPod
- Xcode各类提升开发效率的插件:譬如包管理插件Alcatraz、文档注释插件VVDocument、对齐插件XAlign、沙盒查看插件ZLGotoSandbox、图片名字迅速匹配插件KSImageNamed
其他
单例模式、MVVM模式、工厂模式、Objective-C编程规范、AppStore上架指南
PS:扎扎实实学完上面的内容就可以应付大部分普通的iOS开发需求了-。-
进阶
- KVC/KVO手动管理与原理、Block的理解与原理
- 多线程开发的深层应用(NSThread、NSOperation、GCD)
- SQLite3、CoreData以及CoreData的多线程开发
- 内存管理的底层理解
- CoreText/UITextKit富文本开发、CoreImage开发
- 高级绘图与动画(CA开头框架内容CAShapePath、CADisplayLink等、UIDynamic等)
- Runtime机制原理与应用(消息机制、动态选择/拦截调用、动态添加、关联对象、方法交换等)
- RunLoop的底层原理(应用的流畅度优化等)
再往上就不是什么具体知识点能来说了(主要是因为我也不懂-.-),每个大牛都会说到开发思想这个问题上,更深层次的能力就不能以单一一种语言来衡量的了,毕竟万法归一。实践是检验真理的唯一标准,经验、实践也是很重要的。所以,去吧骚年。
Tips:
* 没事阅读理解下大牛的代码是有利于自己的学习的
* 没事爬爬blog或者开源社区也是挺好的
* Apple的开发文档就是最好的文档
* 开发思路与开发规范很重要