美文网首页
Swift学习笔记五之类和结构体

Swift学习笔记五之类和结构体

作者: 克鲁德李 | 来源:发表于2017-01-09 11:09 被阅读0次

1、类和结构体都可以通过定义属性和添加方法来扩展功能
类和结构体的共同点:通过定义属性存储值;通过定义方法提供功能;通过定义构造器声称初始化值
类与结构体的区别:
类:允许一个类继承另一个;允许引用计数器对一个类的多次引用
结构体:结构体通过复制的方式在代码中传递,不使用引用计数器

2、类与结构体的语法定义
class ClassName{ //类名首字母用大写
//属性和方法 //属性名和方法名的首字母用小写
}

struct StructureName{ //结构体名首字母用大写
//属性和方法 //属性名和方法名的首字母用小写
}

3、实例化类和结构体,访问属性
struct Resolution{
var width = 0
var height = 0
}

class VideoMode{ //定义名为VideoMode的类
var resolution = Resolution() //初始化一个新的Resolution的结构体实例
var interlaced = false //定义一个默认值为false的布尔类型
var frameRate = 0.0
var name: String?
}

//实例化结构体和类
let someResolution = Resolution() //属性都被初始化为默认值
let someVideoMode = VideoMode()

print(someResolution.width) //通过点语法访问属性
print(someVideo. resolution.height) //访问子属性

4、结构体的默认构造器

let initRes1 = Resolution(width:22,height:44) //结构体可设置属性的默认构造器

print("(initRes1.width),(initRes1.height)")//

类没有默认构造器,需要自定义

5、结构体和枚举值的传递都是通过值拷贝

//相当于拷贝了一个副本给initRes2,改变initRes2的属性值不影响initRes1的值
var initRes2 = initRes1

print(initRes1.width) //22
print(initRes2.width) //22改变前的值
initRes2.width = 43
print(initRes1.width) //22
print(initRes2.width) //43改变后的值

enum Direction{
case North,South,East,West
}
var direct1 = Direction.North
var direct2 = direct1
direct2 = Direction.south
print(direct1) //North
print(direct2)//South ,direct2的值改变不会影响direct1

6、类是引用拷贝,拷贝后的值的改变会影响原来的
let videoM1 = ViewMode()
videoM1.name = "videoM1"
//videoM1传递的是一个引用,videoM2还是指向videoM1哪一块内存存储空间
var videoM2 = viedeoM1
videoM2.name = "videoM2"
print(videoM1.name)//videoM2
print(videoM2.name)//videoM2

"==="恒等运算符,用三个等号表示,两个类型的常量或者变量是否引用同一个实例,判断两个引用是否指向同一个对象
print(videoM1===videoM2)

7、类和结构体的选择
结构体:只是用来封装少量简单的数据值;实例被赋值或传递存储的时候需要进行值拷贝,不需要用到继承
类:需要包含复杂的属性方法,能形成一个抽象的事物描述,需要用到继承,需要用到引用拷贝
字符串、数组、字典、的底层都是通过结构体实现的,所以它们在被赋值的时候都是通过值拷贝
当然swift内部会做性能优化,不会只要赋值就拷贝,只有在必要的时候才会进行值拷贝

相关文章

  • Swift学习笔记五之类和结构体

    1、类和结构体都可以通过定义属性和添加方法来扩展功能类和结构体的共同点:通过定义属性存储值;通过定义方法提供功能;...

  • swift学习笔记 ⑤ —— 结构体和类

    Swift学习笔记 - 文集 一、结构体 在 Swift 中,绝大多数公开的类型都是结构体类型。我们在swift学...

  • Swift之类与结构体(笔记)

    关键字 义它们的具体内容:class 和 struct 来分别表示类和结构体struct Resolution {...

  • Swift 3.0 之类和结构体

    类和结构体是人们构建代码所用的一种通用且灵活的构造体。我们可以使用完全相同的语法规则来为类和结构体定义属性(常量、...

  • Swift语法之类和结构体

    类和结构体是人们构建代码所用的一种通用且灵活的构造体。我们可以使用完全相同的语法规则来为类和结构体定义属性(常量、...

  • Swift5.x-属性(中文文档)

    引言 继续学习Swift文档,从上一章节:结构体和类,我们学习了Swift结构体和类相关的内容,如结构体和类的定义...

  • Swift学习笔记五-类和结构体

    类和结构体对比 共同处: 定义属性用于存储值 定义方法用于提供功能 定义附属脚本用于访问值 定义构造器用于生成初始...

  • swift4.0-11 类和结构体

    代码学习swift4.0, 类和结构体 //// main.swift// SwiftLearn11-类和结构...

  • swift学习之类和结构体(class struct、enum)

    class struct enumenum枚举是为一组有限种可能性的相关值提供的通用类型,关键词enum来定义枚...

  • Swift教程之类和结构体

    类和结构体 可以通过使用常量、变量和函数完全相同的语法来定义属性和方法向类和结构添加功能。 Swift不需要为自定...

网友评论

      本文标题:Swift学习笔记五之类和结构体

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