版本
Xcode 11.0
Swift 5.1
前言
我的Swift篇系列文章主要记录一些基础知识点及个人心得, 方便日后查看. 如需更权威更全面的教程可参考以下:
- 中文版 Apple 官方 Swift 教程: SwiftGG. 该翻译项目由 numbbbbb 发起并主导, 已经得到了苹果官方的 认可(Translations 部分). GitHub连接为the-swift-programming-language-in-chinese.
- 菜鸟教程Swift 教程.
关于Swift
Swift 是一种支持多编程范式和编译式的开源编程语言, 苹果于2014年WWDC(苹果开发者大会)发布,用于开发 iOS, macOS, watchOS及tvOS应用程序。
2015年6月8日,苹果于WWDC 2015上宣布,Swift将开放源代码,包括编译器和标准库。
Swift 在 macOS 和 iOS 平台可以和 Objective-C 使用相同的运行环境.
Swift 通过采用现代编程模式来避免大量常见编程错误:
- 变量始终在使用前初始化。
- 检查数组索引超出范围的错误。
- 检查整数是否溢出。
- 可选值确保明确处理 nil 值。
- 内存被自动管理。
- 错误处理允许从意外故障控制恢复。
Swift历史版本
Swift与OC的一些差异
这里只简单罗列一些大概, 其他一些具体的差异等到后续篇章中碰到的时候再来讨论.
- OC一个类由.h和.m两个文件组成, 而Swift只有.swift一个文件.
- OC必须要有一个主函数main()作为程序的入口. Swift则不需要main(), 其全局作用域中的代码会被自动当做程序的入口点, 从第一句开始向下顺序执行。
- OC导入文件使用import<>或者import"", Swift导入库使用import+库名, 使用本工程.swift文件无需import, 可直接使用.
- OC代码行尾需加分号";"(甚至加两个分号都不报错), 而Swift不需要加分号, 如喜欢也可加一个分号(加两个分号会报错). 如果两句代码写在同一行, 则需要分号隔开.
- OC打印方法为NSLog, 而Swift使用print.
- Swift 的 nil 和 Objective-C 中的 nil 并不一样。在 Objective-C 中,nil 是一个指向不存在对象的指针。在 Swift 中,nil 不是指针——它是一个确定的值,用来表示值缺失。任何类型的可选状态都可以被设置为 nil,不只是对象类型。
- Swift3的【Any】可以代表任何类型的值,无论是类、枚举、结构体还是任何其他Swift类型,这个对应OC中的【id】类型。
- 使用 let 来声明常量,使用 var 来声明变量。
Hello, world!
这里先介绍一下Apple推出的一款学习Swift的神器 – playground.
playground集成在Xcode中, 支持代码预览, 写一句代码出一行结果(右侧). 就像是一个可交互的文档, 允许程序员在不编译和运行应用程序的前提下运行 Swift 代码并实时查看结果.
下面开始我们的第一个Swift工程.
- 新建一个playground
2. 选择空白模板
3. 创建名字及保存地址
4. 运行
注: playground没有像Xcode project那样有个command + R的运行快捷键, 不过我们可以手动给playground添加快捷键.
打开电脑 系统偏好设置>>键盘>>快捷键>>应用快捷键, 点击"+"按钮, 应用程序选Xcode, 菜单标题填Run Playground, 快捷键可自行设置, 但不能与Xcode现有的快捷键重复(比如⌘R, ⌘B等). 添加完成后我们就不用每次运行都要鼠标去点击"播放"按钮了.