Swift4学习

Swift4-类和结构体

2018-08-09  本文已影响21人  wingsrao

类和结构体

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 能够管理所有的值的拷贝来确保最佳的性能,所有你也没必要为了保证最佳性能来避免赋值。

上一篇 下一篇

猜你喜欢

热点阅读