6e285d042d21fec68b3f063cabf8ebda
008 | 快速入门iOS开发的正确姿势

前一篇文章已经聊了如何快速入门 Android 开发,本篇则聊聊如何快速入门 iOS 开发。学习方法和学习 Android 其实没什么区别,都是要先学习语言基础,再了解系统基础,再通过实战入门。另外,学习的时候最好能留意一下和 Android 平台的差异,尤其是设计上的差异,并多思考为什么这么设计,这样,才能慢慢培养出全栈最重要的全局思维能力,而不只是简单地熟悉各个端的独立开发。好了,下面先来聊聊语言基础。

语言基础

iOS开发的语言有两种:Objective-CSwift。有些人可能会纠结于先学 Objective-C 还是先学 Swift,我的建议还是从 Swift 开始学比较容易,因为 Swift 的语法相对更友好也更容易理解,而且 Objective-C 已经是一门会逐渐被淘汰的语言。除非你的公司项目依然还是以 Objective-C 为主,而且你也有机会参与开发,这时候才建议先去学 Objective-C。否则,还是从 Swift 开始学吧。不过,目前阶段,学完 Swift 之后,Objective-C 也是有必要学习一下的,毕竟,现在很多旧项目依然还在使用 Objective-C,就算你不直接使用 Objective-C 进行开发,但至少也要看得懂。因此,后面我除了推荐一些学习 Swift 的资源,也会推荐一些学习 Objective-C 的资源。

先来聊聊 Swift 吧,从2014年发布至今,已经更新到4.0版本了。目前关于 Swift 4.0 版本的教程只有官方的电子书《The Swift Programming Language (Swift 4)》。初学者并不需要把整本书看完,只要看完「A Swift Tour」就足够了,这部分章节已经包含了所有核心概念,主要有以下这些:

  • 简单值:使用 let 来声明常量,使用 var 来声明变量
  • 控制流ifswitchfor-inwhile
  • 函数和闭包:用 func 来声明函数,闭包则是一段能之后被调取的代码
  • 对象和类:使用 class 和类名来创建一个类
  • 枚举和结构体:使用 enum 来创建一个枚举,使用 struct 来创建一个结构体
  • 协议和扩展:使用 protocol 来声明一个协议,使用 extension 来为现有的类型添加功能实现扩展
  • 错误处理:使用采用 Error 协议的类型来表示错误,使用 throw 来抛出一个错误并使用 throws 来表示一个可以抛出错误的函数,并使用 do-try-catch 来捕获异常
  • 泛型:泛型用尖括号表示,这点和Java一样

书里的其他章节也不是不需要看,但应该是在需要用到时才去深入了解,尤其是在后面进行实战项目的学习时。如果英文看起来太累,那也可以看极客学院翻译的中文版,只是中文版有部分内容还没同步翻译完 4.0 的内容,因此,最好再去了解下 Swift 4 有哪些更新。以下是资源链接:

接着,再来推荐一些学习 Objective-C 的资源。我在菜鸟教程找到一份和官方 Swift 电子书的「A Swift Tour」类似的 Objective-C 入门教程。还有一份 Cocoa Dev Central 的「Learn Objective-C」也是很适合入门,不过都是英文。以下是这两份资源的地址:

Objective-C 的语法与其他主流语言的语法差异比较大,所以最好不要套入其他语言的思维去理解它。而且,语言只是一种工具,不要太纠结于语法的怪异,只要理解了就好。

最后,视频和其他书籍就不推荐了,一来,我没找到专门只讲解 Swift 或 Objective-C 语言的免费教学视频,极客学院倒是有推出了专门讲 Swift 和 Objective-C 的视频教程,但 Swift 还是 3.0 版本的,而且都是收费的,我觉得没必要花这钱;二来,书籍方面已经有最权威的官方电子书,而且也已经有更新翻译的中文版,真的没必要再去买其他书籍。

语言基础部分,如果学习能力稍强而且学习方法得当,学会每门语言基础花费的总时间应该不会超过两天,快的话可能半天就足够了,我当初学 Objective-C 和 Swift 就分别花了不到一天。当然,这是建立在已经有其他编程语言经验的基础上,如果是零经验,真要因人而异了,一周到一个月不等。

iOS基础

接着,学习 iOS 基础和学习 Android 基础也是一样,除了要熟悉语言基础,还要熟悉开发工具、依赖包管理工具、UI控件、界面开发、网络编程、常用的第三方库等。开发工具没得选,就只有 Xcode。依赖包管理工具是用来管理各种第三方库的,目前主要有三种:CocoaPodsCarthageSwift Package Manager(简称SPM)。CocoaPods 是中心化的,但目前依然是使用得最多的,不管是主流库还是非主流库基本都会支持 CocoaPods。Carthage 是用 Swift 写的,是一个去中心化的解决方案,比 CocoaPods 灵活,虽然支持的库没有 CocoaPods 丰富,但已经足够,Swift 方面的主流库基本全都支持 Carthage,所以我也是最推荐这个工具。SPM 则是 Swift 官方推出的包管理工具,使用最方便,但目前支持的库还非常少,不过应该会是未来的趋势。无论如何,我的建议是三种工具都要熟悉。

学习资源方面,先来说说视频教程。iOS 这块比较好的视频教程资源很少,我做了一番调查之后,发现也就只有斯坦福大学公开课的《Developing iOS 10 Apps with Swift》值得推荐,如果看英文字幕不会太吃力,那我建议是直接上 iTunes U 搜索该课程并订阅查看,上面除了完整的视频还有文稿。iTunes U 可以在 App Store 下载安装。另外,我在优酷找到了具有中文字幕的所有视频,也分享给大家:

其他视频教程真心不推荐了,基本都过时了,很多依然还在用 Objective-C 进行教学,慕课网和网易云课堂上的 iOS 教程也是。极客学院还好点,起码还是以 Swift 为教学语言,但版本太旧了,还是 Swift 1.1 版本的。所以,视频资源方面,斯坦福大学公开课的这一套教程就足够了。

不过,有一点需要补充,斯坦福这套视频只适合已经有一定编程经验的开发者,如果完全是零经验的编程初学者,很多概念是很难理解的,比如说 MVC,所以我并不会推荐给零基础的初学人员。

top Created with Sketch.