【swift-总结】结构体和类
来源:互联网 发布:分类信息网 软件 编辑:程序博客网 时间:2024/06/05 21:12
结构体
结构体是值传递类型
/*** 结构体*/struct Resolution { var width = 0 var height = 0}//把结构体的值赋值给一个常量let resol = Resolution(width: 320, height: 480)//这句话会报错,因为resol是常量,所以里面的值不能修改,这就是值类型resol.width = 20//初始化结构体的时候要保证里面所有属性都有值var res = Resolution(width: 320, height: 480)//如果属性有默认值的话可以这样初始化res = Resolution()//因为结构体是值类型,所以这句话是拷贝,不是引用var anotherRes = res//修改anotherRes的属性不会改变res的属性值anotherRes.width = 380res.width
类
/*** Person类有默认初始值*/class Person { var name = "ttf" var age = 22}//初始化var p1 = Person()//因为类是引用传递,所以p2和p1是同一个对象var p2 = p1//改变p2属性的值也会改变p1的属性值p2.name = "fft"p1.name//若果把类对象付给一个常量指针,还是可以改变里面的属性//可以把p3看成是一个指针,他不能再指向别的对象let p3 = Person()p3.age = 20p3 = p2//错误,不能让p3指向别的对象//===判断两个对象是不是同一个对象//==判断两个对象的值是否相等//!==判断两个对象是不相等if(p1 === p2) { print("相等")}
什么时候用结构体
官方给出几个建议
- 几何形状的大小,封装一个width属性和height属性,两者均为Double类型。
- 一定范围内的路径,封装一个start属性和length属性,两者均为Int类型。
- 三维坐标系内一点,封装x,y和z属性,三者均为Double类型。
集合类型的值传递问题
Swift 中字符串(String),数组(Array)和字典(Dictionary)类型均以结构体的形式实现。这意味着String,Array,Dictionary类型数据被赋值给新的常量(或变量),或者被传入函数(或方法)中时,它们的值会发生拷贝行为(值传递方式)。
Objective-C中字符串(NSString),数组(NSArray)和字典(NSDictionary)类型均以类的形式实现,这与Swfit中以值传递方式是不同的。NSString,NSArray,NSDictionary在发生赋值或者传入函数(或方法)时,不会发生值拷贝,而是传递已存在实例的引用。
0 0
- 【swift-总结】结构体和类
- swift 类和结构体
- Swift结构体和类
- swift 类和结构体
- Swift类和结构体
- Swift-类和结构体
- Swift类和结构体
- Swift-类和结构体
- 【Swift】结构体和类
- Swift 类,结构体,枚举使用总结
- Swift基础语法: 25 - Swift的类和结构体
- Swift --- 2.9类和结构体
- Swift 类和结构体(八)
- Swift 基础 ---类和结构体
- 手把手教swift-类和结构体
- [Swift]结构体和类的基本概念
- 9.Swift-类和结构体
- Swift学习(类和结构体)
- Timer的用法
- How to pass QEMU command-line options through libvirt
- Caffe+Ubuntu14.04+CUDA6.5新手安装配置指南
- LeetCode-Largest Number-解题报告
- Google Guava 类库简介
- 【swift-总结】结构体和类
- Linux 的虚拟文件系统(强烈推荐)
- 【数组】合并有序数列
- 滚动页面时DIV到达顶部时固定在顶部(jq实现)
- hdu 5224 Tom and paper
- linux下read系统调用剖析
- 9个优秀网上免费标签云生成工具
- 负载均衡实现,一个域名对应多个IP地址
- poj3304-Segments-判断直线和线段是否相交