斯坦福大学iOS8公开课笔记03—自动引用计数(ARC)、static、属性观察器、惰性实例化
来源:互联网 发布:淘宝限时抢购在哪 编辑:程序博客网 时间:2024/06/05 18:50
1) ARC: 类class属于引用类型,传递的是对象的指针,而这些对象存储在堆中,系统会自动管理堆中的这些对象,一旦没有指针指向对象,那么对象会马上被清理掉,这就是自动引用计数机制(ARC)。实例化一个Person的类,指向一个变量John,此时产生一个强引用,令John = nil 使得强引用释放,自动调用deinit析构函数,打印“It is deinitialized”
class Person{ var name: String init(name: String){ self.name = name } deinit{ println("It is deinitialized") }}var John:Person? = Person(name: "john")John = nil//"It is deinitialized"
2) static:在变量或是方法前加该关键字,表示调用时是类本身,而不是类的实例;调用address变量时,只能用Person类本身,不能用类的实例John来调用
class Person{ var name: String static var address: String = "BeiJing" init(name: String,address: String){ self.name = name Person.address = address } deinit{ println("It is deinited") }}var John = Person(name: "john", address: "FuJian")println("His name is \(John.name)")//"His name is john"println("His address is \(Person.address)")//"His address is FuJian"
3)属性观察器:可以用来监测属性的变化,didSet:在设置新的值之后调用,旧指oldValue,属性变化之后做点什么 ;wilSet,在设置新的值之前调用,新值newValue,属性变化之前做点什么。注意didSet和willSet不会在初识化时调用。
<pre name="code" class="plain">class Person{ var information: String = "00" var name: String = "11"{ willSet{ self.information = newValue //name改变为“22”之前,此时newValue = "22",{information "22" name "11"} }didSet{ self.information = oldValue //name改变为“22”之后,此时oldValue = "11",{information "11" name "22"} } }}let john = Person()//{information "00" name "11"}john.name = "22"//{information "22" name "11"}//{information "11" name "22"}
4)惰性实例化:在var变量前加关键字“lazy”,代表只有在被用到的时候才会初识化,用来处理复杂的初始化依赖,是非常好的特性。
class Person{ lazy var lazyName: String = "00" var name: String = "11"}let john = Person()//实例化Person,变量lazyName没有被用,所以没有初识化,为nil,变量name直接初始化为“11”//{nil name "11"}john.name//"11"john.lazyName //<span style="font-family: Arial, Helvetica, sans-serif;">变量lazyName被用到,初识化为“00”</span>//"00"
0 0
- 斯坦福大学iOS8公开课笔记03—自动引用计数(ARC)、static、属性观察器、惰性实例化
- 斯坦福大学iOS8公开课笔记04—先暂停学习
- 斯坦福大学iOS8公开课笔记02-值类型和引用类型
- ARC(自动引用计数)
- 自动引用计数(ARC)
- 自动引用计数(ARC)
- iphone 自动引用计数(ARC)
- iOS 之ARC(自动引用计数)
- Swift 自动引用计数(ARC)
- 斯坦福大学公开课:iOS8开发 第一课:课务,iOS8概述学习笔记
- 斯坦福大学iOS8公开课笔记01-IOS8结构和MVC模式
- IOS ARC 自动引用计数
- Swift 自动引用计数(ARC)
- Object C 自动引用计数ARC 学习笔记
- 【Objective-C学习笔记】内存管理——ARC自动引用计数
- ios5新特性:自动引用计数(ARC)详解
- iOS开发之ARC(自动引用计数)
- iOS开发之ARC(自动引用计数)
- IOS navigation 返回按钮 不显示文字
- poi上传解析execl
- parcelable接口
- c++带默认参数的函数的声明、定义及使用总结
- PYTHON 双引号 单引号 多引号区别
- 斯坦福大学iOS8公开课笔记03—自动引用计数(ARC)、static、属性观察器、惰性实例化
- 由一个梦想到的
- 简单的跑马灯效果
- java 二维数组格式化显示
- 微信开发从入门到精通教程大全 资料大全 java和php版本;教程文档、代码、视频 微信商城实例
- 理解IP路由器原理及工作机制
- OK6410 usb驱动分析
- 在Style中定义动画类型
- WinCE设备动态链接库的制作与调用