- 1.懒加载的介绍
- swift中也有懒加载的方式
(苹果的设计思想:希望所有的对象在使用时才真正加载到内存中) - 和OC不同的是swift有专门的关键字来实现懒加载
- lazy关键字可以用于定义某一个属性懒加载
- 2.懒加载的使用
- 格式
lazy var 变量: 类型 = { 创建变量代码 }() - 懒加载的使用
- 懒加载的本质是,在第一次使用的时候执行闭包,将闭包的返回值赋值给属性
- lazy的作用是只会赋值一次
lazy var datalist:[String] = { ()->[String] in print("搞他") return ["1","2","3"] }()
- 3.getter与setter
import UIKit class Person: NSObject { // 在企业开发中不建议这样写 var _name : String? var name : String?{ get{ return _name } // 只要外界给通过对象,name给name赋值,那么就会保存在newValue set{ _name = newValue } } // 只读的 ?可以不要 var gender : String?{ // 设置完值之后调用 // Swift中使用didSet来替代OC中重写setter方法 didSet{ print(gender!) } } // 如果只重写了get方法,那么这个属性我们称之为 计算型 属性 // 也就是对应OC中的只读属性 // 注意点:计算型属性是不占用内存空间的 var age : Int{ get{ return 30 } } }
调用
import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // 在swift中,如果想使用某一个类,是不用导入头文件的 // 因为Swift 中新增了一个OC中以前没有的概念 “命名空间” // 只要是在一个命名空间下的资源都是共享的 // 默认情况下,项目名称就是命名空间 // 正式因为这样,所以在做swift开发中有很多的坑 // 如果是swift项目要使用第三方框架,那么建议使用cocopods来集成框架 // 因为如果是通过cocopods集成的框架,在另外一个项目中,那么命名空间就不一样 // 这样可以有效地避免三方中的类 和 我们自己的冲突 let person = Person() person.gender = "jk" print(person.age) } }