Swift 类和结构体的简单认识

类和结构体的共同点:

 

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

 

类相对于结构体多出的附加功能:

 

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

 

类的定义:

class CustomClass {     // 声明一个类 一般命名都是大写开头 如:String Array
    // 可以在这里声明属性和方法
    var name: String?
    let orderCount = 100
    let isBasic = true
}

 

结构体的定义:

struct CustomStruct {   // 声明一个结构体 命名方式与类一样
    // 可以在这里声明属性和方法
    var width = 100.0
    var height = 50.0
}

 

实例化:

类和结构体的实例化方法很相似,以下代码分别生成结构体和类的实例,调用的都是默认构造器

let someClass = CustomClass()
var someStruct = CustomStruct()

 与类不同的是结构体默认拥有逐一构造器,可以方便的设置属性的值

var secondStruct = CustomStruct(width: 50.0, height: 91.0)

 

属性操作:

类和结构体都可以使用.(点语法)进行属性的操作

someClass.name = "order1"
print("print someClass name \(someClass.name)")
// 打印 print someClass name Optional("order1") <因为name属性是可空类型 所以会打印出 Optional("order1")>

someStruct.height = 100.0
print("print someStruct width:\(someStruct.width) and height:\(someStruct.height)")
// 打印出 print someStruct width:100.0 and height:100.0 <因为width在声明CustomStruct的时候就已经给了默认值 所以值为100.0>

 

恒等运算符:

恒等运算符的作用是比较两个变量是否引用的是同一个实例,因为类是引用类型。然而结构体却不需要,因为结构体在每次赋值或者通过传参的时候都会发生拷贝(值类型特性)。"==="代表等价于 "!=="代表不等价

var secondClass = CustomClass()
var thirdClass = someClass

if thirdClass !== secondClass {
    print("引用的不是同一个实例")
}

if someClass === thirdClass {
    print("引用的是一个实例")
}

 

这次是对结构体和类的简单认识,之后会记录具体使用的笔记以供备忘

posted @ 2016-05-06 16:41  Alex_sun  阅读(143)  评论(0编辑  收藏  举报