Swift与OC

106 阅读1分钟

struct与class异同

  • 共同点
  1. 定义属性用于存储值
  2. 定义方法用于提供功能
  3. 定义下标操作使得可以通过下标语法来访问实例所包含的值
  4. 定义构造器用于生成初始化值
  5. 通过扩展以增加默认实现的功能
  6. 实现协议以提供某种标准功能
  • 类更强大
  1. 继承允许一个类继承另一个类的特征
  2. 类型转换允许在运行时检查和解释一个类实例的类型
  3. 析构器允许一个类实例释放任何其所被分配的资源
  4. 引用计数允许对一个类的多次引用
  • 两者的区别
  1. struct是值类型,class是引用类型。
  2. struct有一个自动生成的成员逐一构造器,用于初始化新结构体实例中成员的属性;而class没有。
  3. struct中修改 self 或其属性的方法必须将该实例方法标注为 mutating;而class并不需要。
  4. struct不可以继承,class可以继承。
  5. struct赋值是值拷贝,拷贝的是内容;class是引用拷贝,拷贝的是指针。
  6. struct是自动线程安全的;而class不是。
  7. struct存储在stack栈中,class存储在heap堆中,struct更快。