Swift中为什么多用strcut以及它与class的区别

核心的区别是struct使用的时候是copy的(值传递), class使用的时候是引用的(引用传递)

struct为值类型,结构体和枚举都是值类型的,默认情况下,值类型的属性是不能从它的实例方法内部改变,要想用它的方法修改属性数据,就必须在方法前面加上mutating关键词。带有mutating关键词标志的方法,可以在方法内部修改这些值,并且方法返回后还有效,class则没有这个限制。

图片来源于https://iosgg.cn/2016/10/11/swift_class_struct/

值类型相对于引用类型是非常有优势的:

1.安全性
因为 Struct 是用值类型传递的,它们没有引用计数。

2.内存
由于他们没有引用数,他们不会因为循环引用导致内存泄漏。

3.速度
值类型通常来说是以栈的形式分配的,而不是用堆。因此他们比 Class 要快很多。

4.线程安全
值类型是自动线程安全的。无论你从哪个线程去访问你的 Struct ,都非常简单。

但是object-c不能调用struct,只能用class。所以在编程的时候也要根据需要来选择用class或者struct

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值