专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Swift

【Swift】学习笔记(8)——类和结构体

发布时间:2011-06-30 07:23:51 文章来源:www.iduyao.cn 采编人员:星星草
【Swift】学习笔记(八)——类和结构体

1、类和结构体的定义

<pre name="code" class="html">struct Resolution {
    var width = 0
    var height = 0
}
class VideoMode {
    var resolution = Resolution()
    var interlaced = false
    var frameRate = 0.0
    var name: String?    //值为可选String类型的name
}



类:关键字class,  struct:结构体


2、创建类和结构体的实例(其他语言中称实例为对象。)

let someResolution = Resolution()
let someVideoMode = VideoMode()

咦,很简单啊,怎么没有关键字new呢。。。。  和将函数赋值给变量是一样的啊。是的。就这么简单。无需关键字。


3、结构体有一个逐属性构造器,类木有。

let vga = Resolution(width:640, height: 480)


4、使用. 点 来访问属性,包括访问和赋值。

someVideoMode.resolution.width = 1280


5、结构体是值类型,类是引用类型。


6、类的恒等运算符 等价于(===),不等价于(!==)判断两个变量或常量是否引用了同一个实例


7、指针无需特定的(*)来表示是一个内存地址引用,也不需要特定的符号(->)来访问,它和访问属性是一样的 用 (.)点。


8、类和结构体的区别

Swift 中类和结构体有很多共同点。共同处在于:

  • 定义属性用于存储值
  • 定义方法用于提供功能
  • 定义附属脚本用于访问值
  • 定义构造器用于生成初始化值
  • 通过扩展以增加默认实现的功能
  • 符合协议以对某类提供标准功能

与结构体相比,类还有如下的附加功能:

  • 继承允许一个类继承另一个类的特征
  • 类型转换允许在运行时检查和解释一个类实例的类型
  • 解构器允许一个类实例释放任何其所被分配的资源
  • 引用计数允许对一个类的多次引用

9、类和结构体的选择

按照通用的准则,当符合一条或多条以下条件时,请考虑构建结构体:

  • 结构体的主要目的是用来封装少量相关简单数据值。
  • 有理由预计一个结构体实例在赋值或传递时,封装的数据将会被拷贝而不是被引用。
  • 任何在结构体中储存的值类型属性,也将会被拷贝,而不是被引用。
  • 结构体不需要去继承另一个已存在类型的属性或者行为。

合适的结构体候选者包括:

  • 几何形状的大小,封装一个width属性和height属性,两者均为Double类型。
  • 一定范围内的路径,封装一个start属性和length属性,两者均为Int类型。
  • 三维坐标系内一点,封装xyz属性,三者均为Double类型。

在所有其它案例中,定义一个类,生成一个它的实例,并通过引用来管理和传递。实际中,这意味着绝大部分的自定义数据构造都应该是类,而非结构体。






版权声明:本文为博主原创文章,未经博主允许不得转载。

友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: