💻
ExistOrLive' Gitbook
  • README
  • ReadMe
  • 开发语言学习
    • Python
      • 0.概述
      • 1.基本数据类型
      • 2.变量
      • 3.函数
      • 4.运算符
      • 5.字符串
      • 6.列表
      • 7.元组
      • 8.集合
      • 9.字典
      • 10.流程控制
      • 12.函数
      • 13.模块
      • 14.输入输出格式化
      • 15.面向对象
    • Swift
      • 1.基础部分
        • 常量和变量以及基本类型_1
        • 常量和变量以及基本类型_2
      • 2.基本运算符
        • 基本运算符
      • 3.字符串和字符
        • 字符串
        • 字符串操作
      • 4.集合类型
        • 概述
        • Array
        • Set
        • Dictionary
      • 6.函数
        • 函数
        • 函数返回值
        • 函数类型
      • 7.闭包
        • 闭包
        • 闭包表达式
        • 尾随闭包
        • 捕获变量或常量
        • 闭包是引用类型
        • 逃逸闭包
        • 自动闭包
      • 8.枚举
        • 枚举
        • 枚举与switch语句
      • 9.类和结构体
        • 类和结构体
        • 属性
          • 属性
          • 属性观察器
          • 属性包装器
          • 全局变量和局部变量
          • 类属性
        • 方法
    • Shell
      • Shell变量和基本类型
      • Shell函数
      • Shell基本运算符
      • Shell脚本的参数
      • Shell流程控制
      • Shell输入输出
      • Shell文件包含
  • iOS
    • UI
      • UIKit
        • UIView
          • UIView
          • drawRect
        • UITableView
          • UITableView
          • UITableView的加载过程
  • 学习开发工具
    • 静态分析
      • OCLint
      • infer
      • SwiftLint
    • iOS构建工具
      • fastlane
        • fastlane
        • fastlane的安装
        • fastlane一键打包
        • fastlane证书管理
    • Cocoapods
      • 安装pod库-podfile
      • 创建pod库-podspec
  • 开源库
    • Tool
      • Swiftlint源码学习
      • 利用Swiftlint自定义规则实现自动化code review
由 GitBook 提供支持
在本页
  • 1. 结构体和类的对比
  • 1.1 相同点
  • 1.2 不同点
  • 2. 定义Class和Struct
  • 3. 结构体和枚举是值类型
  • 4. 类是引用类型
  • 4.1 恒等运算符

这有帮助吗?

在GitHub上编辑
  1. 开发语言学习
  2. Swift
  3. 9.类和结构体

类和结构体

Swift支持面向对象编程,支持自定义类型。Swift中的自定义类型被分为结构体Struct和类Class。

Struct是值类型,例如Int,Float,Array,Set,String,Dictionary等类型都是Struct类型;

Class是引用类型,例如 闭包表达式,UIKit框架的类型

1. 结构体和类的对比

1.1 相同点

  • 定义储存属性和计算属性

  • 定义方法用于提供功能

  • 定义下标操作用于通过下标语法访问它们的值

  • 定义构造器用于设置初始值

  • 通过扩展以增加默认实现之外的功能

  • 遵循协议以提供某种标准功能

1.2 不同点

  • 结构体是值类型;类是引用类型

  • 继承允许一个类继承另一个类的特征(继承性)

  • 类型转换允许在运行时检查和解释一个类实例的类型(动态性)

  • 析构器允许一个类实例释放任何其所被分配的资源 (析构器)

  • 引用计数允许对一个类的多次引用 (引用计数)

2. 定义Class和Struct

struct SomeStructure {
    // 在这里定义结构体
}
class SomeClass {
    // 在这里定义类
}

3. 结构体和枚举是值类型

值类型是这样一种类型,当它被赋值给一个变量、常量或者被传递给一个函数的时候,其值(即每一个成员)会被拷贝。

Swift 中所有的基本类型:整数(integer)、浮点数(floating-point number)、布尔值(boolean)、字符串(string)、数组(array)和字典(dictionary),都是值类型,其底层也是使用结构体实现的。

标准库定义的集合,如数组,集合,字典和字符串,都会采用写时拷贝机制进行优化。

4. 类是引用类型

引用类型在赋值是不会拷贝对象的值,而是传递对象的引用(指针)。

4.1 恒等运算符

为了判定两个常量或者变量是否引用同一个类实例,Swift提出了恒等运算符

// 相同

===

// 不相同

!==
上一页9.类和结构体下一页属性

最后更新于3年前

这有帮助吗?

类支持的附加功能是增加复杂性为代价的。作为一般准则优先使用Struct,必要时使用Class。 更多的比较参考

在结构体和类之间选择