Swift基础 结构体

本文探讨了Swift中的结构体,包括其声明方式、值类型特性、构造方法、属性观察以及下标语法。结构体成员为值类型,复制时不影响原始对象,提供安全性和运行效率。此外,还介绍了如何在结构体中定义构造方法和使用下标语法来访问和修改属性。
摘要由CSDN通过智能技术生成

结构体

声明结构体的关键字是struct,使用起来和类相似,但类的成员是引用类型,而结构体的成员是值类型。

值类型在传递和赋值的时候,是进行复制的,那也就是说在修改一处复制体的时候,原来被复制的对象是不受影响的。

引用类型在传递和赋值的时候,是传递引用对象的一个“指向”,所以当对该引用进行修改的时候,是直接直接修改到最原始的对象,即,一旦修改值,则对该原始对象的所有引用都会被同步修改。

在内存中,引用类型的变量是在堆上存储和操作的。值类型的变量是在栈上存储和操作的。两者相比起来,在堆上的变量操作会比较复杂和耗时。所以苹果官方推荐使用结构体,这样可以提高App的运行效率。

结构体的优势:

  • 结构较小,适用于复制,相比一个class的实例被多次引用,struct结构体更加安全。
  • 无须担心内存泄漏或者多线程冲突安全。
    struct student {
   
        var name = "name"
        var index = 202100
        var height = 160.00
        var profession = "profession"
        var sex = "男"
    }
    var xiaoMing = student()
    xiaoMing.name = "xiaoMing"
    xiaoMing.index = 202101
    xiaoMing.height = 172.5
    xiaoMing.profession = "计算机科学与技术"
    xiaoMing.sex = "男"
    print("\(xiaoMing)")

运行结果:

student(name: "xiaoMing", index: 202101, height: 172.5, profession: "计算机科学与技术", sex: "男")

当然也可以在定义结构体的时候不给出初始值,而是给出数据的基本类型。

    struct student {
   
        var name : String
        var index :Int
        var height :CGFloat
        var profession : String
        var sex : String
    }

因为swift中函数也是一种类型,所以结构体中也可以定义函数。

结构体可以有构造方法
struct Student{
   
    //可用结构体名称直接调用属性,不需要创建实例
    static let schoolName = "XXX SCHOOL"
    
    var age
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值