Swift学习笔记—— 类和结构体
2015-08-24 01:15
337 查看
// 类和结构体的定义 class SomeClass { } struct SomeStructure { }
// 定义结构体和定义类 struct Resolution{ var width = 0 var height = 0 } class VideoMode { var resolution = Resolution() var interlaced:Bool? var name:String? } // 因为name 没有赋予初始值,那么我们要设置 name 为一个可选类型 // name属性会被自动赋予一个默认值nil,意为“没有name值”,因为它是一个可选类型。
// 结构体类型有成员的逐一构造器,但是类没有,要设置方法实现构造器 let someResolution = Resolution(width: 10, height: 20) let someVideoMode = VideoMode()
// 结构体和枚举都是值类型 let hd = Resolution(width: 1920, height: 1080) var cinema = hd cinema.width = 2048 println("\(hd.width)") // hd.width = "1920" // 即使修改了 cinema 的 width 值也不会影响 hd 的 width,这种类型叫做值类型 // 这个实例中可以看出在 Swift 中,所有的结构体和枚举都是值类型。这意味着它们的实例,以及实例中所包含的任何值类型属性,在代码中传递的时候都会被复制,而不是引用
// 类是引用类型 let tenEighty = VideoMode() tenEighty.resolution = hd tenEighty.interlaced = true tenEighty.name = "我们" let alsoTenEighty = tenEighty alsoTenEighty.name = "他们" println("tenEighty.name is \(tenEighty.name) and alsoTenEighty.name is \(alsoTenEighty.name)") // println : "tenEighty.name is Optional("他们") and alsoTenEighty.name is Optional("他们")" // 如果修改了alsoTenEighty 的 name 属性就会导致 tenEighty 的 name 属性被修改,这种类型叫做引用类型 //因为类是引用类型,所以tenEight和alsoTenEight实际上引用的是相同的VideoMode实例。换句话说,它们是同一个实例的两种叫法。
相关文章推荐
- swift详解之九---------------自动引用计数、循环引用(这个必须理解,必须看)
- swift详解之八---------------下标脚本
- swift 绘图
- 使用Swift模拟Window-LFU
- swift详解之七------------你真的了解构造过程吗(构造过程和析构过程)
- Swift学习笔记——枚举
- Swift学习笔记之数组
- Swift版知乎日报
- Swift:UIKit中Demo(一)
- Swift入门(十)——循环引用、弱引用和无主引用
- Swift 那些二三事
- Swift学习笔记之字符串(总结)
- Swift详解之六----------------枚举、结构体、类
- swift 跳转页面
- swift 创建桥接头文件
- Swift面向对象介绍(一)
- 问答Swift2.0-基本运算符、字符串和字符
- swift初始化
- Swift-闭包简单使用
- Swift相关图书推荐