Swift实用小册08:Class类的Struct结构体的使用

简介: Swift实用小册08:Class类的Struct结构体的使用

image.png

在本章中,你将学会Class类的Struct结构体的使用。


前言


Apple官网或者网上分享的教程类文章不同,我将以实际开发角度讲述Swift语言的一些概念和用法,方便大家更好地学习和掌握Swift语言。

这同时也是对自己学习Swift语言过程的知识整理。


如有错误,以你为准。


我们新建一个SwiftUI项目,命名为SwiftUIClass

image.png

类的创建


类,是对一件事物的抽象

类是对储存的实际数据的引用,本质上是一种数据类型。

Swift开发中,我们经常会把某个具有一定联系的成员值放在一个类中,示例:


//类的创建
class appInformation {
    var appName:String = "Swift实用小册"
    var appversion:String = "1.0.0"
    var appAuthor:String = "文如秋雨"
}


上述代码中,我们定义了一个appInformation类,用来描述app的基本信息,它包含3个可变的属性:appName、appversion、appAuthor,我们赋予了这3个属性的类型和初始值,我们也可以不用声明类型,Swift可以根据初始值自动判断其类型。


类的使用


在我们定义好类之后,在业务代码中我们调用类并访问它的成员属性,我们需要先实例化类,由于类有自己的访问方式,因此我们可以直接访问类的属性。示例:


//类的使用
let appMessage = appInformation()    //实例化
VStack(spacing: 20) {
    Text(appMessage.appName)
        .font(.largeTitle)
        .foregroundColor(.blue)
    Text(appMessage.appversion)
        .font(.title3)
        .foregroundColor(.gray)
    Text(appMessage.appAuthor)
        .font(.title3)
        .foregroundColor(.gray)
}


上述代码中,我们用构造器语法来实例化了appInformation类,然后在业务代码中,使用【实例化名称+属性名称】的方式来访问类的属性。

image.png


由于我们定义的appInformation类中的成员值是变量,我们也可以在实际使用过程中重新赋值,也就是我们可以更新appInformation类的成员值的初始值。


结构体的创建


结构体,是Swift的一个新特征,是对一个结构的抽象,它只是用于表示一种数据结构。

Swift中,所有的基本类型:整数(Integer)、浮点数(floating-point)、布尔值(Boolean)、字符串(string)、数组(array)和字典(dictionary)在底层都是以结构体的形式所实现。


//结构体的创建
struct Constants {
    var homeViewName = "模版"
    var mineViewName = "我的"
}

上述代码中,我们定义了一个Constants结构体,它有2个常量成员值:homeViewName、mineViewName,我们赋予了成员属性的初始值。


结构体的使用


结构体和类的概念和用法很相似,结构体的主要目的是用来封装少量相关的数据值。示例:


//结构体的使用
let constants = Constants()    //实例化
HStack(spacing: 20) {
    Text(constants.homeViewName)
        .font(.largeTitle)
        .foregroundColor(.blue)
    Text(constants.mineViewName)
        .font(.title3)
        .foregroundColor(.gray)
}


image.png

在类中,我们是直接引用类和访问类的值,这样在我们在实际业务中可以更新类中成员值。这样很容易出现一个问题是,我们协作时,有人给类重新赋值了,那么app中所有用到这个类的地方就会更新相应的成员值。这样有时候我们只想在某个地方单独修改就比较麻烦了。


而结构体不同,结构体内的属性不能继承,也就是说我们实例化的时候,只是将结构体的成员值“复制”过来,而不是直接引用,那我们更改赋值的时候,只会在我们实例化的参数对应的地方进行更新。


类和结构体如何选择


Swift更加推荐值类型变量(struct)而不是引用类型(class)的变量,因为类每次都引用时都会消耗拷贝资源,而结构体比较好的是每次实例化的时候,都是复制值对象出来,而且也不会影响其他地方的时候。

以上就是本章的全部内容。

快来动手试试吧!


相关文章
|
1月前
|
存储 定位技术 Swift
Swift 中的枚举与结构体,包括它们的定义、特性、使用场景及示例
本文深入探讨了 Swift 中的枚举与结构体,包括它们的定义、特性、使用场景及示例。枚举适合表示有限的、离散的状态或选项,结构体则适用于具有特定属性和行为的数据结构。两者在存储方式、继承性和灵活性上有所不同,但在实际开发中常结合使用,以充分发挥各自优势。
35 3
|
1月前
|
存储 Swift 开发者
Swift 是一种现代编程语言,支持面向对象编程(OOP),包括类、对象、继承、多态等核心概念
Swift 是一种现代编程语言,支持面向对象编程(OOP),包括类、对象、继承、多态等核心概念。通过这些特性,Swift 能够帮助开发者构建结构清晰、可维护性强的代码。本文介绍了 Swift 中 OOP 的基本概念、高级特性和实际应用,并通过一个简单的 `Car` 类示例展示了如何在 Swift 中实现面向对象编程。
23 1
|
1月前
|
Swift 索引 容器
Swift 泛型-关联类
Swift 泛型-关联类
23 1
|
2月前
|
Swift
Swift 中 struct(结构体)和 class(类)的区别
【10月更文挑战第10天】理解 struct 和 class 的区别对于正确使用 Swift 语言进行编程非常重要。在实际开发中,需要根据具体的需求和场景来选择合适的数据类型,以充分发挥它们的优势,提高代码的质量和效率。
|
1月前
|
存储 Swift iOS开发
Swift 类
10月更文挑战第29天
13 0
|
1月前
|
Swift iOS开发
Swift 结构体
10月更文挑战第28天
29 0
|
7月前
|
存储 数据处理 Swift
在Swift中,类(class)和结构体(struct)
在Swift中,类(class)和结构体(struct)
76 1
|
存储 编解码 编译器
Swift5.1—类和结构体
Swift5.1—类和结构体
121 0
Swift5.1—类和结构体
|
存储 Swift iOS开发
Swift讲解专题十——类与结构体
Swift讲解专题十——类与结构体
105 0
|
iOS开发 Swift 存储
swift4.0-11 类和结构体
代码学习swift4.0, 类和结构体 // // main.swift // SwiftLearn11-类和结构体 // // Created by iOS on 2018/5/7. // Copyright © 2018年 weiman. All rights reserved. // import Foundation print("Hello, World!") /* swift的类文件只有一个,不像OC中有.h和.m文件。
1152 0