swift 学习笔记(22)-属性(存储属性/延迟属性)
2016-11-15 12:03
399 查看
属性有很多类型,比如存储属性:赋值存值的,延迟属性,差不多和 oc 中的懒加载类似,计算属性,类型属性.还有属性观察器等
存储属性
延迟属性
注意观察属性调用的时间(有了 lazy 关键字,只有当属性第一次被调用的时候才会初始化)
存储属性
class Person{ // 属性由 var 修饰,如果类实例也是 var 修饰,则类实例的属性值可变 var name = "zhangsan" var age = 23 } //var 修饰类实例,属性值可变,类实例也可以重新赋值 var person1 = Person() person1.name = "wangwu" print(person1.name) person1.name = "张三" print(person1.name) person1 = Person() //let 修饰类实例,var属性值可变, let 修饰的属性值不可变,类实例 不可以重新赋值 let person2 = Person() person2.name = "zhaoliu" print(person2.name) person2.name = "赵六" print(person2.name) //let 修饰的类实例不可以重新赋值 //person2 = Person() //结构体 struct Point { var x = 0 var y = 0 } //var 修饰结构体实例,属性值可变,类实例也可以重新赋值 var p1 = Point() p1.x = 20 print(p1.x) p1.x = 30 print(p1.x) //let 修饰的结构体实例不可以重新赋值,属性也不可以重新赋值,不管属性是 var 还是 let 修饰,都默认为 let 不能修改 let p2 = Point() print(p2.y) //p2.y = 11 // p2 = Point()
延迟属性
注意观察属性调用的时间(有了 lazy 关键字,只有当属性第一次被调用的时候才会初始化)
class Man{ var name = "wangxiao" // 延迟属性 lazy 前面加 lazy 关键字 lazy var car = Car(car:"baoma") } class Car{ var car = "dazhong" init(car:String) { self.car = car for i in 1...1000{ print(i) } } } // 如果 Man 的car 属性不加 lazy ,就会立刻执行 car 类中的 for 循环进行初始化 var man = Man() // 如果加了 lazy 在这里才会初始化 car //man.car = Car(car: "baoma")
相关文章推荐
- swift学习笔记--计算属性和存储属性的区别
- Swift 系统学习 24 类相关 存储属性 计算属性 类型属性 延迟加载属性
- Swift 系统学习 25 类相关 延迟存储属性
- swift学习记录(存储属性)
- Object-C--->Swift之(九)延迟存储属性
- 学校学习ios教程笔记,第七节swift中的类与对象的属性和懒加载
- swift自学笔记(四)(懒加载、存储属性、计算属性、类属性、属性监听)
- 【Swift】延迟存储属性
- ASP.NET 3.5核心编程学习笔记(22):LINQ与SQL的交互、延迟加载与预加载
- Swift 基础学习(存储属性)
- 学习Swift笔记 (十一)Swift的属性
- Swift学习笔记(八)属性
- swift学习笔记之数据持久化(属性列表)
- PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
- Swift学习笔记—— 属性
- Swift学习笔记(13)--属性 (Properties)
- Swift学习笔记22——泛型(Generics)
- swift学习笔记(一)NSUserDefaults存储对象的方法
- Swift基础语法-属性,存储属性,延迟存储属性,计算属性,属性观察器,类属性
- swift学习笔记之--类的计算属性