swift面向对象之属性

swift面向对象之属性

swift属性


存储属性

可以存储常量和变量


惰性存储属性

语法:lazy var 变量

惰性存储属性只有在用的时候才会完成真正的初始化,刚开始的初始化代码只是类型占位,并没有分配存储空间。

比如

class people{

var name:String

init(name:String){

self.name=name

}

}

class car{

lazy var carOwner=people(name:”shu”)

fun show(){

println(carOwner.name)

}

}

然后新建一个car实例,这时carOwner并没有初始化,只有当car实例调用show方法时,才会给carOwner这个属性分配存储空间。


以下3种情况用到惰性存储属性

1.在构造属性的时候无法知道属性的外部信息,则使用惰性属性(比如当你输入框输入时你才知道该把属性赋值什么)

2.当属性的值需要大量计算或者很复杂时,为了不阻塞对象初始化


3.必须把惰性存储属性设置成变量,因为属性的值在实例完成构造前,无法得到


计算属性

计算属性有下面几个特点

虽然是属性,却没有实际的内存空间,在类的结构中不占存储位置


提供了取值访问器get和赋值访问器set,负责获取该属性的值,或提供该属性给其他的存储属性赋值


为swift类属性增加了开闭规则


但凡计算属性必须是变量类型var,因为计算属性不确定


取值访问器的标准格式

var 计算属性:类型{

get{

return 值

 }

}


精简形式

var  计算属性:类型{

return 值

}


对于赋值访问器

var 计算属性:类型{

set(newValue){

进行属性赋值

}

}


精简形式

var 计算属性:类型{

set{}

}

只读控制,即开闭规则的实现,对于某些属性我们只允许访问而不允许赋值,则称这类属性为只读属性。对外访问开发,对内赋值关闭,这是编程原则里面很重要的开闭规则

var isHappy:Bool{

//取值访问器

get{

if(dream!=“”&&(dream == realty)||lover!=nil||apperance=“帅到睡不着”)

return true

}else{

return false

}

}


类型属性

类型属性的格式为class var 属性名:类型{get/set{}}


对于引用类型(类就属于引用类型)必须使用计算属性而不能使用存储属性


必须给类型属性指定默认值,因为类型属性不属于实例范畴,不能使用任何一个实例是构造器赋值


类型属性本质是计算属性的范畴,与get/set访问器的用法完全相同


下面一个例子

class People{

class var planet:String{

return “地球”

}

}


属性观察器

属性观察器不能用在惰性存储属性上,因为惰性存储属性是临时产生的,所以无法观察其有效期。


对于可以重写的属性,可以在子类中增加观察器,但是对于非重写的属性则没有必要,因为可以在赋值访问器中触发观察的行为


类似于kvo模式


属性观察器可以用于全局变量和局部变量


willSet

willSet(willSetValue){

//willSetValue可以用户自定义

}简化格式为:willSet{

//必须使用newValue作为参数

}


didSet

didSet(oldSetValue){

//oldSetValue可以用户自定义

}简化格式为:didSet{

//必须使用oldValue作为参数

//}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566114.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python小白的数学建模课-16.最短路径算法

最短路径问题是图论研究中的经典算法问题,用于计算图中一个顶点到另一个顶点的最短路径。在图论中,最短路径长度与最短路径距离却是不同的概念和问题,经常会被混淆。求最短路径长度的常用算法是 Dijkstra 算法、Bellman-Ford 算法和Floyd 算法…

虚拟机(centos)磁盘空间不够

磁盘空间不够 1.关机 2.打开设置-->硬盘 --> 扩展 3.搞定一半 4.开机进入终端 4.1 查看 lsblk 4.2 加起来 growpart /dev/sda 3 注1: 如果 growpart 提示没有的话需要安装一下 yum -y install cloud-utils-growpart 注2:3前面有个空格 4.3 再次…

swift面向对象之方法

swift面向对象之方法 1.下标方法 下标方法仅用于实例,可以在类,结构体,枚举中使用,作用简化类型中的访问方式,注意以下几点 下标方法属于三栖方法,可用于类,结构体和枚举 下标方法的格式为subsc…

Python小白的数学建模课-17.条件最短路径算法

条件最短路径问题,指带有约束条件、限制条件的最短路径问题。例如: 顶点约束,包括必经点或禁止点的限制; 边的约束,包括必经路段、禁行路段和单向路段;无权路径长度的限制,如要求经过几步或不超…

Python小白的数学建模课-18.最小生成树问题

Python小白的数学建模课-18.最小生成树问题 最小生成树(MST)是图论中的基本问题,具有广泛的实际应用,在数学建模中也经常出现。路线设计、道路规划、官网布局、公交路线、网络设计,都可以转化为最小生成树问题&#xf…

Css表格

Css表格 Css表格 css表格属性可以帮助你极大的改善表格的外观 1.表格内间距 2.折叠边框 border-collapse属性设置是否将表格边框折叠为单一边框: table { border-collapse:collapse; } 3.表格边框 下面的例子为table、th以及td设置了蓝色边框: …

Python小白的数学建模课-19.网络流优化问题

流在生活中十分常见,例如交通系统中的人流、车流、物流,供水管网中的水流,金融系统中的现金流,网络中的信息流。网络流优化问题是基本的网络优化问题,应用非常广泛。网络流优化问题最重要的指标是边的成本和容量限制&a…

Python小白的数学建模课-20.网络流优化案例

在实际工作和数模竞赛中,网络最大流问题、最小费用流问题和最小费用最大流问题都有很多延伸和推广的应用。本文介绍了常见的网络最大流问题、最小费用流问题的应用与推广,及其解题方法。本文选择多源多汇物流转运问题、多商品流问题案例,详细…

HTML文档类型

HTML文档类型 HTML5 <!DOCTYPE html> HTML4.01 <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”> XHTML1.0 <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w…

Python小白的数学建模课-21.关键路径法

Python小白的数学建模课-21.关键路径法 关键路径法是基于进度网络模型的方法&#xff0c;用网络图表示各项活动之间的相互关系&#xff0c;获得在一定工期、成本、资源约束条件下的最优进度安排。NetworkX 提供了拓扑序列和关键路径的函数&#xff0c;但没有给出计划网络分析的…

swift面向对象之多态与继承

swift面向对象之多态与继承 1.多态 运行时多态 运行时多态的要点 1.要有继承关系的存在 2.子类要重写父类的方法 3.父类类型的引用指向子类实例 2.继承 1.继承的注意 继承可以用于类而不能用于结构体和枚举&#xff0c;继承也可用于协议 swift中不能使用多继承&#xff0c;oc中…

Python小白的数学建模课-22.插值方法

Python小白的数学建模课-22.插值方法 插值、拟合、回归和预测&#xff0c;都是数学建模中经常提到的概念&#xff0c;也经常被混淆。插值&#xff0c;是在离散数据的基础上补插连续函数&#xff0c;使得插值函数通过全部给定的离散数据点&#xff0c;多用于图像处理和缺失数据处…

Python小白的数学建模课-23.数据拟合全集

拟合是用一个连续函数&#xff08;曲线&#xff09;靠近给定的离散数据&#xff0c;使其与给定的数据相吻合。数据拟合的算法相对比较简单&#xff0c;但调用不同工具和方法时的函数定义和参数设置有所差异&#xff0c;往往使小白感到困惑。本文基于 Scipy 工具包&#xff0c;对…

Css背景

Css背景 1.背景图像&#xff1a;background-image 要把图像放入背景&#xff0c;需要使用background-image 属性。background-image属性的默认值是 none&#xff0c;表示背景上没有放置任何图像。 如果需要设置一个背景图像&#xff0c;必须为这个属性设置一个 URL值&#xff…

Python小白的数学建模课-11.偏微分方程数值解法

偏微分方程可以描述各种自然和工程现象&#xff0c; 是构建科学、工程学和其他领域的数学模型主要手段。 偏微分方程主要有三类&#xff1a;椭圆方程&#xff0c;抛物方程和双曲方程。 本文采用有限差分法求解偏微分方程&#xff0c;通过案例讲解一维平流方程、一维热传导方程…

Css语法

Css语法 如果值为若干个单词&#xff0c;加引号 p {font-family: “sans serif”;} 多重声明&#xff1a;分号隔开 如果要定义不止一个声明&#xff0c;则需要用分号把声明隔开。如 p {text-align:center; color:red;} 你应该在每行只描述一个属性&#xff0c;这样可以增强…

A4.2021年全国数学建模竞赛A题-赛题分析与评阅要点(FAST主动反射面的形状调节)

Python小白的数学建模课-A4.2021年全国数学建模竞赛A题&#xff08;FAST主动反射面的形状调节&#xff09;&#xff0c;本文转载竞赛赛题、评阅要点&#xff0c;进行赛题解读和分析。 评阅要点为竞赛组委会官方公布&#xff0c;完整体现了解题思路。 『Python小白的数学建模课…

Css字体

Css字体 使用像素 Firefox&#xff0c;Chrome&#xff0c;and Safari中文本大小可调节&#xff0c;而ie不行 使用em em可以解决在ie中浏览器显示文本的问题。w3c推荐用em作为尺寸单位。 1em等于当前的字体尺寸&#xff0c;如果一个元素的font-size为16像素&#xff0c;那么对…

A5.2021年全国数学建模竞赛B题-赛题分析与评阅要点(乙醇偶合制备C4烯烃分析)

A5.2021年全国数学建模竞赛B题-赛题分析与评阅要点&#xff08;乙醇偶合制备C4烯烃分析&#xff09;&#xff0c;本文转载竞赛赛题、评阅要点&#xff0c;进行赛题解读和分析。 评阅要点为竞赛组委会官方公布&#xff0c;完整体现了解题思路。 本文首发于 2021年9月8日&#…

emmet插件使用(Css)

emmet插件使用(Css) 渐变 输入lg(left,#fff50%,#000),会生成如下代码 background-image: -webkit-gradient(linear, 0 0, 100% 0, color-stop(0.5, #fff), to(#000)); background-image: -webkit-linear-gradient(left, #fff 50%, #000); background-image: -moz-linear-gradie…