下面就是我自学 iOS 开发的一些经验和心得。
如果你是完全的零基础,我建议先要对编程有个基本的认识。建议从 C 语言入手,因为 C 语言比较简洁易上手,并且和 Objective-C 很相似。
当对 C 语言有个大致的了解后,就可以开始学习 Objective-C 了。
《Objective-C基础教程》
《Objective-C程序设计》
注:这两本内容都差不多,但《Objective-C基础教程》写的更好、更经典,建议以这本为重点精读。但是这本写的比较笼统,难度稍高,所以如果遇到不懂的地方就看看《Objective-C程序设计》,这一本写的简单、详细一些。
面向对象编程的基础知识。包括:面向对象与面向过程的区别、为什么要面向对象编程,类、对象、继承、方法、属性、接口等概念的理解与使用。
Foundation 框架。主要是 NSString 类、NSArray 类、NSDictionary 类、NSNumber 类、NSRange 类的熟练运用。
内存管理 MRC、ARC 的原理,委托 delegate、协议 protocol、类别 category、块 block 的理解与使用。
有了 Objective-C 基础,就可以开始边看斯坦福公开课边做 APP 了(个人觉得没有 OC 基础直接看这个会很吃力)。视频如下:
斯坦福大学公开课CS193P《iOS7应用开发》(Objective-C语言)
斯坦福大学公开课CS193P《iOS8开发 》(Swift语言)
苹果官方有个做iOS应用的教程——《马上着手开发iOS应用程序(Start Developing iOS Apps Today)》。
强烈建议以这个 Demo 作为你的第一个 iOS 应用,因为这个教程能让你对一个 iOS 应用的搭建有个非常全面、细致的认识。完成了这个 Demo 后,就可以结合斯坦福公开课学到的东西创建属于你自己的 APP 了。
MVC 设计模式。只有理解了 iOS 的 MVC 架构,才能把一个应用解剖成一个个单独的部分,这样你在开始做一个项目的时候才不会茫无头绪。
UIKit 的各种控件。特别是 UITableView 和 UICollectionView 一定要掌握,因为大部分的 iOS 应用都是由这两种视图搭建,吃透了它们那可玩的花样就很多了,其乐无穷。
导航控制器 UINavigationController 和选项卡控制器 UITabBarController。同上,这两个控制器也是绝大多数 iOS 应用 UI 框架的根基,也是多个 MVC 协同工作的最典型例子。
场景切换的实现——Segue。熟练使用 Segue 很重要,因为一个应用一般都是各个界面轮流出现的,两个界面之间怎样实现跳转、怎样将一个界面的数据传递到下个界面,这都是实际开发中会遇到的问题。
Storyboard 和 AutoLayout 的使用。这两者是一个应用的UI界面设计不可或缺的部分。
其它 iOS 高级编程。包括:数据存取 CoreData/SQLite、多线程 GCD、绘图 CoreGraphics、动画 CoreAnimation、网络编程、手势 Gesture、多媒体 AVFoundation 等等,这些内容都可以实际用到时再深入学习。
第三方库的使用。参考:GitHub 上都有哪些值得关注学习的 iOS 开源项目? - 编程
学习编程,一定要勤于动手,看再多的书、再多的视频,如果不动手敲代码都是白搭。哪怕书上和视频上的代码你一行都看不懂,也要亲手把代码敲一遍、把 Demo 亲自实现一遍,这很重要。编程是手敲会的,不是眼睛看会的。
学习 iOS 开发的过程中,有遇到不懂是正常的,别害怕不懂,Cocoa 的内容细节本来就多,每年的 WWDC 还会发布一些新技术。所以遇到不懂的知识一定要学会查苹果官方 API 文档:iOS Dev Center
此外,CSDN 等一些技术博客上的文章也很有参考价值。推荐一些优秀的 iOS 技术博客——中文 iOS/Mac 开发博客列表:tangqiaoboy/iOSBlogCN · GitHub
如果你能按照以上所述做出一个 APP 上架并找到工作,那也基本算是入门了。但这并不是终点,这只是一个新的起点。iOS 开发,乃至整个计算机/互联网行业,后面的路还很漫长。苹果的整个 Cocoa 框架,可谓是博大精深,里面可以深挖的东西太多了;而且一个程序、一段代码可以进行的优化是没有止境的。作为开发者,只会一门语言是不够的,网络编程、数据库、算法、设计、交互等等东西都是需要掌握的,而语言只是实现这些的工具,语言其实是最简单的。
数据结构、算法、操作系统、数据库、计算机网络、编译原理等。因为这些知识是你的「内功」,这些基础直接决定了你在这个领域的天花板所在的位置。