swift - 类和结构体(之定义与区别)
来源:互联网 发布:js 在线翻译接口 编辑:程序博客网 时间:2024/05/09 16:33
类和结构体
结构体包括:杖举、数组、字典。即都为值类型
类为引用类型
类结构体杖举属性支持支持支持定义方法支持支持支持附属脚本支持支持支持构造器支持支持支持扩展来增强类或结构体默认实现的功能支持支持支持支持协议支持支持支持继承支持不支持不支持类型转换支持不支持不支持析构方法支持不支持不支持引用计数的方式支持不支持不支持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引用了同一个类对象")
}
- swift - 类和结构体(之定义与区别)
- swift - 类和结构体(之属性)
- 《从零开始学Swift》学习笔记(Day 25)——类和结构体定义
- 《从零开始学Swift》学习笔记(Day 25)——类和结构体定义
- swift中类和结构体的区别
- Swift中结构体(Struct)和类(Class)的区别
- [绍棠_Swift] Swift中类和结构体的区别
- 定义结构体与类组合的区别和如何用它们
- 8.1 Swift结构体定义
- Swift类与结构体
- Swift结构体与类
- swift类和结构体(一)
- swift类和结构体(二)
- Swift 基本知识点之七类与结构体
- Swift 基本知识点之八 —类与结构体
- Swift之旅(五)枚举与结构体
- swift 类和结构体
- Swift结构体和类
- Python 迭代器
- Java中的简单工厂模式
- android 从sdcard安装apk,点击home键,出现问题
- iOS UICollectionView 使用详解
- 机器学习实践指南(二)—— 作为 baseline 的 SVM(scikit-learn)
- swift - 类和结构体(之定义与区别)
- Java处理 网站高并发问题 的优化方法
- WebView白屏问题
- UIAlertController
- python 中列表的sort方法
- 学习Unity官方教程-Survival Shooter tutorialの声明
- asp.net gridview后台绑定数据,根据个人要求显示数据队型
- vs2010 c# MySql 用户登录注册设计代码优化1
- (转)