Swift
- Swift简介
- 基本数据类型
- 运算符和表达式
- 流程控制
- 集合类
- 函数和闭包
- 面向对象编程
- 泛型
- 多线程
- 理论与实践
- 玩转GCD
- 基础设施和编程范式
- 其他话题
- 常见第三方库、SwiftUI
- Swift和Objective-C混编
- Swift运行时
- 项目实战
Swift简介
- Error handling增强
- guard语法
- 协议支持扩展
- 内联序列函数sequence
- 新增fileprivate和open两个权限控制
- 移除了++、--运算符
- extension中可以访问private的属性
- 类型和协议的组合类型
- Associated Type可以追加Where约束语句
- 新的Key Paths语法
- 下标支持泛型
- 字符串增强
- 定义了与Python或Ruby等脚本语言互操作的动态可调用类型
编程范式
- Swift可以面向协议编程、函数式编程、面向对象编程。
- Objective-C 以面向对象编程为主,引入ReactiveCocoa类库来进行函数式编程
- 函数是一等公民
类型安全
- 类型不能混用,如果定义NSString类型,不能传入int类型
- OC定义的NSString变量。可以传入NSNumber变量
值类型增强
- 在Swift中,典型的有struct、enum以及tuple都是值类型。
- Int、Double、Float、String、Array、Dictionary、Set其实都是结构体实现的,值类型
- OC中,NSNumber、NSString以及集合类对象都是指针类型
泛型
- Swift支持泛型,泛型约束
- OC也支持泛型,Generics泛型支持,目前只在编译器警告阶段
协议和扩展
- Swift协议配合扩展(extension)、泛型、关联类型实现面向协议编程
- OC的协议缺乏约束
函数和闭包
- Swift函数是一等公民,可以直接定义函数类型变量,可以作为参数传递,可以作为函数返回值返回
- OC中函数是次等公民,需要结合selector封装以及Block才能达到Swift的效果。
编译过程
swiftc
- swift -o main.out main.swift
- Swift Abstract Syntax Tree(AST) swiftc main.swift -dump-ast
- Swift Intermediate Language(SIL) swiftc main.swift -emit-sil
- LLVM Intermediate Representation(LLVM IR) swiftc main.swift -emit-ir
- Assembly Language swiftc main.swift -emit-assembly
REPL
-
Xcode6.1引入了另外一种以交互式的方式来体验Swift的方法
-
Read Eval PrintLoop,简称REPL
-
退出:quit
-
帮助:help
-
将光标移动到当期行的开始处 Control+A
-
将光标移动到当期行的结束处 Control+E
-
REPL中可以编写swift代码
Playground
- Swift Playgroud首次公布于WWDC2016
- 最开始是为了让人人都能愉快的学习Swift编程
- 工具很强大
- iPad APP Playgrounds
- Playground_Live View(显示UI预览)