[计算机] 关于Swift中Struct,Class和Enum的哪些事儿

查看:570 |回复:1 | 2018-1-8 00:08:55

您需要 登录 才可以下载或查看,没有账号?注册

x
前言
Swift type System
1020.jpg
Swift是强类型的,尽管只有六种类型。
  • 命名类型: protocol, class , struct , enum
  • 复合类型:tuple, function

可能会有疑问,那些基本类型:Bool,Int,UInt, Float, Double, Character, String, Array, Set, Dictionary, Optional。实际上他们都是通过命名类型创建的。

Struct Class and Enum 比较
Swift中提供了多种可以结构化存储数据的方式,它们是: struct、enum和
class。Swift标准库中的绝大多数类型都是struct,甚至Foundation中的一些类也提供了它们在Swift中的struct版本,而class和enum只占很少一部分。
Class,Struct and Enum对比表
copy byinheritancestatic variableinstance variablestatic methodinstance method
ClassReference✅✅✅✅✅
StructValue✘✅✅✅✅
EnumValue✘✅✘✅✅
共同点:
  • 都可以当作
  • 都可以使用泛型
  • protocol
  • 都可以使用extension,扩充method
如何抉择?
通常,在平时的编程中,按照对象的生命周期形态,可以把使用的类型分成两大类:
  • 一类必须有明确生命周期的,它们必须被明确的初始化、使用、最后明确的被释放。例如:文件句柄、数据库连接、线程同步锁等等。这些类型的初始化和释放都不是拷贝内存这么简单,通常,这类内容,我们会选择使用class来实现。
  • 另一类,则是没有那么明显的生命周期。 例如:整数、字符串、URL等等。这些对象一旦被创建之后,就很少被修改,我们只是需要使用这些对象的值,用完之后,我们也无需为这些对象的销毁做更多额外的工作,只是把它们占用的内存回收就好了。这类内容,通常我们会选择使用struct或enum来实现。

评分

参与人数 1活跃度 +5 展开 理由
首席游骑兵 + 5

查看全部评分

2018-1-8 00:08:55  
 赞 赞 0

使用道具 登录

1个回答,把该问题分享到群,邀请大神一起回答。
2#
不明觉历
回复 收起回复
2018-1-8 15:07:25   回复
 赞 赞 0

使用道具 登录

CG 游戏行业专业问题

综合文库
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表