Swift学习笔记——类和结构体

Posted lxjshuju

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift学习笔记——类和结构体相关的知识,希望对你有一定的参考价值。

1、类和结构体的定义

<pre name="code" class="html">struct Resolution {
    var width = 0
    var height = 0
}
class VideoMode {
    var resolution = Resolution()
    var interlaced = false
    var frameRate = 0.0
    var name: String?    //值为可选String类型的name
}



类:keywordclass,  struct:结构体


2、创建类和结构体的实例(其它语言中称实例为对象。)

let someResolution = Resolution()
let someVideoMode = VideoMode()

咦,非常easy啊,怎么没有keywordnew呢。。

 和将函数赋值给变量是一样的啊。是的。

就这么简单。无需keyword。


3、结构体有一个逐属性构造器,类木有。

let vga = Resolution(width:640, height: 480)


4、使用. 点 来訪问属性,包含訪问和赋值。

someVideoMode.resolution.width = 1280


5、结构体是值类型,类是引用类型。


6、类的恒等运算符 等价于(===),不等价于(!==)推断两个变量或常量是否引用了同一个实例


7、指针无需特定的(*)来表示是一个内存地址引用,也不须要特定的符号(->)来訪问。它和訪问属性是一样的 用 (.)点。


8、类和结构体的差别

Swift 中类和结构体有非常多共同点。共同处在于:

  • 定义属性用于存储值
  • 定义方法用于提供功能
  • 定义附属脚本用于訪问值
  • 定义构造器用于生成初始化值
  • 通过扩展以添加默认实现的功能
  • 符合协议以对某类提供标准功能

与结构体相比,类还有例如以下的附加功能:

  • 继承同意一个类继承还有一个类的特征
  • 类型转换同意在执行时检查和解释一个类实例的类型
  • 解构器同意一个类实例释放不论什么其所被分配的资源
  • 引用计数同意对一个类的多次引用

9、类和结构体的选择

依照通用的准则。当符合一条或多条下面条件时,请考虑构建结构体:

  • 结构体的主要目的是用来封装少量相关简单数据值。
  • 有理由估计一个结构体实例在赋值或传递时,封装的数据将会被拷贝而不是被引用。

  • 不论什么在结构体中储存的值类型属性,也将会被拷贝,而不是被引用。
  • 结构体不须要去继承还有一个已存在类型的属性或者行为。

合适的结构体候选者包含:

  • 几何形状的大小。封装一个width属性和height属性,两者均为Double类型。
  • 一定范围内的路径,封装一个start属性和length属性,两者均为Int类型。
  • 三维坐标系内一点,封装xyz属性。三者均为Double类型。

在全部其他案例中,定义一个类。生成一个它的实例,并通过引用来管理和传递。实际中,这意味着绝大部分的自己定义数据构造都应该是类,而非结构体。






以上是关于Swift学习笔记——类和结构体的主要内容,如果未能解决你的问题,请参考以下文章

《从零开始学Swift》学习笔记(Day 25)——类和结构体定义

《从零开始学Swift》学习笔记(Day 30)——选择类还是结构体呢?

swift学习笔记构造过程

Swift-类和结构体(Class and Structures)

Swift的闭包,枚举,类和结构体

swift类和结构体004-类和结构体基本使用