【Swift】学习笔记(八)——类和结构体

前端之家收集整理的这篇文章主要介绍了【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
}

 

类:关键字class, struct:结构体


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

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

咦,很简单啊,怎么没有关键字new呢。。。。 和将函数赋值给变量是一样的啊。是的。就这么简单。无需关键字。


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类型。

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

原文链接:https://www.f2er.com/swift/326417.html

猜你在找的Swift相关文章