懒加载和getter,setter

简介: 懒加载和getter,setter
  • 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)
    }
  }


目录
相关文章
|
8月前
|
JavaScript
vue的computed中的getter和setter
vue的computed中的getter和setter
|
JavaScript 前端开发
Vue的getter和setter方法是干什么的?底层原理是什么?
Vue的getter和setter方法是干什么的?底层原理是什么?
695 0
|
5月前
构造函数注入和 Setter 依赖注入
【8月更文挑战第22天】
58 0
|
6月前
|
JavaScript
VUEX 使用学习五 : getter
VUEX 使用学习五 : getter
54 0
|
8月前
|
JavaScript API
Vue之数据代理(getter、setter)
Vue之数据代理(getter、setter)
通过getter获取setter函数
通过getter获取setter函数
50 1
|
IDE Java 编译器
基于注解处理器开发自动生成getter和setter方法的插件
基于注解处理器开发自动生成getter和setter方法的插件
511 0
|
前端开发
前端学习案例16-setter和getter的应用
前端学习案例16-setter和getter的应用
54 0
前端学习案例16-setter和getter的应用
|
开发者
|
JavaScript
Vue——02-03计算属性:computed的getter/setter
计算属性:computed的getter/setter
141 0