Swift简介

113 阅读2分钟

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的效果。

编译过程

image.png

image.png

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代码 image.png

Playground
  • Swift Playgroud首次公布于WWDC2016
  • 最开始是为了让人人都能愉快的学习Swift编程
  • 工具很强大
  • iPad APP Playgrounds
  • Playground_Live View(显示UI预览)