1 struct是值类型,class是引用类型:
值类型的变量直接包含它们的数据,对于值类型都有它们自己的数据副本,因此对一个变量操作不可能影响另一个变量.值类型包括结构体 (数组和字典),枚举,基本数据类型 (boolean, integer, float等).
引用类型的变量存储对他们的数据引用,对一个变量操作可能影响另一个变量.
二者的本质区别:struct是深拷贝;class是浅拷贝。
2 property的初始化不同:
class 在初始化时不能直接把 property 放在默认的 constructor 的参数里,而是需要自己创建一个带参数的 constructor;而struct可以,把属性放在默认的 constructor 的参数里。
3 变量赋值方式不同:
struct是值拷贝;class是引用拷贝。
4 immutable变量:
swift的可变内容和不可变内容用var和let来甄别,如果初始为let的变量再去修改会发生编译错误。struct遵循这一特性;class不存在这样的问题。
5 mutating function:
struct 和 class 的差別是 struct 的 function 要去改变 property 的值的时候要加上 mutating,而 class 不用。
6 继承:
struct不可以继承,class可以继承。
7 struct比class更轻量:
struct分配在栈中,class分配在堆中。
661,struct 与 class 的区别(重点:最详细的答案,1,struct是值类型,class是引用类型 2,初始化不同 struct是可以默认初始化 class是需要自定义参数的,s...
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- Swift 中Class和Struct异同 Swift 中类和结构体有很多共同点。共同处在于: 定义属性用于存储值...
- Swift 中 struct 是值类型,而 class 是引用类型,所以这篇文章 struct 的行为也可以用到所...
- 数据类型:struct是值类型,class是引用类型。值类型变量直接包含数据,赋值时也是值拷贝,或者叫深拷贝,所以...
- Swift主要为我们提供了以下四种”named types“ 分别是:enum、struct、class和prot...