这也是一个面向对象的问题,作为实例对象的你需要一步一步去攻城拔寨。待各处插满了自己的旗帜,回过头来,你会感谢一路走来的自己!
一、入门
面向对象编程基础(类和继承,变量和方法的作用域,MVC基本概念,分类)
方法和函数(消息,类定义和属性,与C/C++的混合编程)
内存管理(strong/weak, ARC自动引用计数,自动释放对象)
代码设计模式(Block块语句,Target/action,协议)
UIKIT(视图层级,绘制事件,触摸事件,动画)
多媒体(配置,AVFoundation, C语言的API)
二、中级
掌握核心类库:
相机和microphone
社交网络与分享
CoreData数据持久化
Foundation,又包括Application loop(应用循环),Threads(线程),Networking(网络)。
MapKit,也就是如何使用地图
Passbook,也就是和移动支付系统的整合
CoreLocation,如何在茫茫人海之中找到你所爱的位置
Bluetooth,蓝牙模块,如果你要开发周边硬件设备,这是必不可少的
Notifications,消息推送,又包括Local本地和Push(APNS)推送
CoreMotion, 比如陀螺仪相关的东西
GameKit,和第三方游戏设备(手柄)相关的东西
SpriteKit,类似cocos2d的2D游戏引擎
三、进阶
第三方依赖库管理
懂CocoaPods的iOS开发者不说立马晋升高大上,至少也突破了屌丝的瓶颈。
对CocoaPods的使用请参考这里:CocoaPods安装和使用教程
攻城工具Xcode的学习:
项目管理:包括文件结构,导航,Build 设置,属性列表等
代码编辑器:包括如何高亮,查找,自动完成,查看文件,Assistant Editor等等。
Interface Builder: 如今的Interface Builder(界面编辑器)是内置在Xcode中的,这部分又包括Storyboards和xib的使用,控件类型及属性设置,IBOutlet和IBAction,自定义类,Tag,视图文件结构等。
代码调试工具:包括lldb,断点,日志等
Instrumentation工具:包括内存泄露和CPU使用率的监控等。
Git版本管理:包括repository的管理,branching和merging。
详情请参考:
四、高级
软件工程
iOS开发者除了知道如何具体写代码,还要在思想上提升自己的档次,站在一个更高的角度看待项目的开发和管理。这个时候就需要了解一些软件工程的概念。
对于软件工程,需要掌握的内容如下:
应用程序的架构:比如模块化和SOA,逻辑封装等
敏捷过程:比如项目所有者和用户场景,迭代开发,高效沟通等。其中迭代开发步伐又包括测试和结对编程,CI和代码审阅,QA质量测试和调试。
项目管理:比如项目规划和评估,工具和文档化,Licensing等。
五、淬炼期大成
(1)、iOS开发者的淬炼功法1-Tests测试
一个有经验的iOS开发者往往会采用测试驱动开发的思路。
大概要学习的内容包括:
测试类型:单元测试,功能测试,整合测试,性能测试,可用性测试,回归测试等。
连续测试:continuous integration,自己去google
XCTest:Xcode特有的测试方法。
关于这部分的内容详细参考:
Quality Coding
Xcode Overview: Unit Test Your App
(2)、iOS开发者的淬炼功法2-Git版本控制
iOS开发者需要对Git版本控制有一定程度的了解。
具体包括:
版本控制系统:其中又包括分布式VCS,Branch,Merge,Diff
GitHub的使用:Fork和Pull requests
config: remotes和default behaviors。
(3)、iOS开发者的淬炼功法3—移动应用开发的独特性
虽然Web开发,PC端应用开发,移动应用开发并没有等级之分,但各自却有了完全不同的特点。
开发者需要根据移动应用开发的独特性掌握相应的知识:
HIG(Human Interface Guidelines):人机界面交互,具体参考:
iOS Human Interface Guidelines: Designing for iOS 7
流量消耗的考虑:包含两个方面,一个是安装包的大小,另一个则是在使用过程中的流量消耗。
多线程操作:比如上传下载文件之类比较耗时间的操作可以单独放在一个线程中,详细请参考:Grand Central Dispatch (GCD) Reference
状态保存和恢复:让用户下一次进入应用时仍然进入此前所在的界面和状态。
本地化:根据用户所在的地区选择对应的语言显示
(4)、iOS开发者的淬炼功法4—吸星大法-参考别人的源代码
源代码的来源包括:
http://developer.apple.com中苹果官方的源代码;
http://github.com里面的源代码;
code4app,cocoachina等第三方网站中大家共享的源代码;
教程网站和其它第三方网站中的源代码(如http://raywenderlich.com等);
通过逆向过程研究别人的应用,这个有点高大上了。
(5)、iOS开发者的淬炼功法5—提高英语水平
一个修真者莫大的痛苦是,自己的面前摆着一门绝世神通,却TMD是火星文完全看不懂?
对于iOS开发者(包括其它程序猿)来说,如果自己的英文水平不行,就等于手握万千绝世神通却半个字都不懂。
所以,最起码要多花时间看看英文文档,教程,博客,论坛,不必刻意去学,而是在提高自己iOS功力的同时提高自己的英文水平。两者相辅相成,相得益彰。
(6)、产品发布
App Store发布:包括provisioning profile,code-signing,开发者入口,具体参考:
或苹果官方文档,因为具体做法经常会有调整。