类和结构体
结构体包括:杖举、数组、字典。即都为值类型
类为引用类型
类 | 结构体 | 杖举 | |
属性 | 支持 | 支持 | 支持 |
定义方法 | 支持 | 支持 | 支持 |
附属脚本 | 支持 | 支持 | 支持 |
构造器 | 支持 | 支持 | 支持 |
扩展来增强类或结构体默认实现的功能 | 支持 | 支持 | 支持 |
支持协议 | 支持 | 支持 | 支持 |
继承 | 支持 | 不支持 | 不支持 |
类型转换 | 支持 | 不支持 | 不支持 |
析构方法 | 支持 | 不支持 | 不支持 |
引用计数的方式 | 支持 | 不支持 | 不支持 |
1.定义:
struct Resolution{
var width = 100
var height = 100
}
class VideoMode{
var resolution = Resolution()
var interlaced = false
var frameRate = 0.0
var name : String?
}
2.创建类和结构体实例:
let someResolution = Resolution()
let someVideoMode = VideoMode()
二、值类型和引用类型
在swift语言中分值类型和引用类型。前面介绍的基础类型(Int、Float、String、Array、Dictionary等)都是值类型。值类型在赋值时就是一个拷贝过程。 (修改新值也不会影响原来的值)
对于一些复杂的类型,如类,是引用类型。如果在类对象之间发生赋值操作,就相当于该类对象被多次引用。如果使用一个引用修改类成员的值,那么其他引用对应的成员值也会发生变化。
赋值方式如:
值类型:
let hd = Resolution(width:1920,height:1080)
var cinema = hd
cinema.width = 2048
println("cinema is now \(cinema.width) pixels wide") //cinema is now 2048 pixels wide
println("hd is still \(hd.width) pixels wide")//hd is still 1920 pixels wide
引用类型:
let vm = VideoMode()
var vm1 = vm
vm1.frameRate = 2.0
println("vm.frameRate is now \(vm.frameRate)")//vm.frameRate is now 2.0
println("vm1.frameRate is now \(vm1.frameRate)")//vm.frameRate is now 2.0
三、类对象的判断(===、!==)
l.let myVideoMode1 = VideoMode()
let myVideoMode2 = VideoMode()
var myVideoMode3 = myVideoMode1
//返回true
if myVideoMode1 === myVideoMode3{//myVideoModel 和 myVideoMode3 引用了同一个类对象
println("myVideoModel 和 myVideoMode3 引用了同一个类对象")
}else{
println("myVideoModel1 和 myVideoMode3 引用了不同的类对象")
}
//返回true
if myVideoMode1 !== myVideoMode2{//myVideoMode1 和 myVideoMode2引用了不同的类对象
println("myVideoMode1 和 myVideoMode2引用了不同的类对象" )
}else{
println("myVideoMode1和myVideoMode2引用了同一个类对象")
}