美文网首页Swift4学习
Swift4-类和结构体

Swift4-类和结构体

作者: wingsrao | 来源:发表于2018-08-09 10:59 被阅读21次

类和结构体

1.Swift不需要你为自定义类和结构体创建独立的接口和实现文件。在 Swift 中,你在一个文件中定义一个类或者结构体, 则系统将会自动生成面向其他代码的外部接口。
2.类与结构体的对比:
在 Swift 中类和结构体有很多共同之处,它们都能:

  • 定义属性用来存储值;
  • 定义方法用于提供功能;
  • 定义下标脚本用来允许使用下标语法访问值;
  • 定义初始化器用于初始化状态;
  • 可以被扩展来默认所没有的功能;
  • 遵循协议来针对特定类型提供标准功能。

类有而结构体没有的额外功能:

  • 继承允许一个类继承另一个类的特征;
  • 类型转换允许你在运行检查和解释一个类实例的类型;
  • 反初始化器允许一个类实例释放任何其所被分配的资源;
  • 引用计数允许不止一个对类实例的引用。

3.结构体在你的代码中通过复制来传递,并且并不会使用引用计数。

4.定义:无论你在何时定义了一个新的类或者结构体,实际上你定义了一个全新的 Swift 类型。

class SomeClass {
     // class definition goes here
}  
struct SomeStructure {
    // structure definition goes here
}

5.初始化器语法最简单的是在类或结构体名字后面接一个空的圆括号,例如 Resolution()或者 VideoMode()。

6.结构体类型的成员初始化器

struct Resolution {
      var width = 0
      var height = 0 
  }
let vga = Resolution(width: 640, height: 480)

7.结构体和枚举是值类型
值类型是一种当它被指定到常量或者变量,或者被传递给函数时会被拷贝的类型。
Swift 中所有的结构体和枚举都是值类型,这意味着你所创建的任何结构体和枚举实例——和实例作为属性所包含的任意值类型——在代码传递中总是被拷贝的。

8.类是引用类型
相对于拷贝,这里使用的是同一个对现存实例的引用。

9.有时候找出两个常量或者变量是否引用自同一个类实例非常有用,为了允许这样,Swift提供了两个特点运算符:

  • 相同于 ( ===),意味着两个类类型常量或者变量引用自相同的实例;
  • 不相同于( !==)

10.按照通用准则,当符合以下一条或多条情形时应考虑创建一个结构体:

  • 结构体的主要目的是为了封装一些相关的简单数据值;
  • 当你在赋予或者传递结构实例时,有理由需要封装的数据值被拷贝而不是引用;
  • 任何存储在结构体中的属性是值类型,也将被拷贝而不是被引用;
  • 结构体不需要从一个已存在类型继承属性或者行为。

11.字符串,数组和字典的赋值与拷贝行为
Swift 的 String , Array 和 Dictionary类型是作为结构体来实现的,这意味着字符串,数组和字典在它们被赋值到一个新的常量或者变量,亦或者它们本身被传递到一个函数或方法中的时候,其实是传递了拷贝。

12.在上述有关字符串,数组和字典“拷贝”的描述中。你在代码中所见到的行为好像总是拷贝。然而在后台 Swift 只有在需要这么做时才会实际去拷贝。Swift 能够管理所有的值的拷贝来确保最佳的性能,所有你也没必要为了保证最佳性能来避免赋值。

相关文章

  • Swift4-类和结构体

    类和结构体 1.Swift不需要你为自定义类和结构体创建独立的接口和实现文件。在 Swift 中,你在一个文件中定...

  • 类和结构体

    类与结构体 本节内容包括: 类和结构体对比 结构体和枚举是值类型 类是引用类型 类和结构体的选择 集合类型的赋值与...

  • swift4-结构体和下标

  • Swift Tour Learn (六) -- Swift 语法

    Swift语法基础(五)-- (类和结构体、属性、方法) 本章将会介绍 类和结构体对比结构体和枚举是值类型类是引用...

  • swift基础_结构体和类

    一.结构体和类 结构体张这个样子 类张这个样子 二.结构体和类的区别 针对结构体, 即使你没有定义函数,编译器也会...

  • Day9 类和结构体

    本页包含内容:• 类和结构体对比• 结构体和枚举是值类型• 类是引用类型• 类和结构体的选择• 字符串、数组、和字...

  • Swift学习_基本语法之枚举&类&结构体

    1.枚举 类和结构体 在swift中类和结构体类似,可以把结构体理解成是一种轻量级的类,在swift中结构体不仅可...

  • swift面向对象特性——类和结构体

    类和结构体的定义 类的语法格式为: 结构体的语法格式为: Swift中类和结构体的名称都以大写字母开头。类的方法和...

  • SwiftUI-结构体与类

    一.结构体与类 结构体和类都可以使用属性和方法构建复杂数据类型,但是什么时候使用结构体,什么时候使用类呢?结构体和...

  • Swift5.1类和结构体

    9.类和结构体 结构体和类相比Swift中结构体和类的共同点:- 定义属性⽤于存储值- 定义方法⽤于提供功能- 定...

网友评论

    本文标题:Swift4-类和结构体

    本文链接:https://www.haomeiwen.com/subject/amsqbftx.html