zoukankan      html  css  js  c++  java
  • Swift属性

    概述

    Swift中跟实例相关的属性可以分为2大类

    存储属性(Store Property)

    • 类似成员变量的概念
    • 存储在实例的内存中
    • 结构体、类可以定义存储属性 枚举不可以定义存储属性

    计算属性(Computed Property)

    • 本质就是方法(函数)
    • 不占用实例的内存
    • 枚举、结构体、类可以定义计算属性

    存储属性 

    关于存储属性,Swift有明确规定

    在创建类 或 结构体的示例时,必须为所有的存储属性设置一个合适的初始值

    • 可以在初始化器里为存储属性设置一个初始值
    • 可以分配一个默认的值作为属性定义的一部分

    计算属性

    set传入的新值默认叫做newValue,也可以自定义 

    只读计算属性:只有get,没有set

    定义计算属性只能用var,不能使用let 因为let代表常量:值是一成不变的

    延迟存储属性

    使用lazy可以定义一个延迟存储属性,在第一次用到属性的时候才会进行初始化

    lazy属性必须是var,不能是let 因为let必须在示例的初始化方法完成之前拥有值

    如果多条线程同时第一次方位lazy属性 无法保证属性只被初始化一次

    延迟存储属性注意点

    当结构体包含一个延迟属性时,只有var才能访问延迟存储属性

    因为延迟存储属性初始化时需要改变结构体的内存

    属性观察器

    Swift可以为非lazyvar存储属性设置属性观察器

    willSet会传递新值,默认叫newValuedidSet会传递旧值,默认叫oldValue

    在初始化器中设置属性值不会触发willSetdidSet

    在属性定义时设置初始值也不会触发willSetdidSet

    属性观察器、计算属性的功能,同样可以应用在全局变量、局部变量身上

  • 相关阅读:
    Spark 1.1.0 安装测试 (分布式 Yarn-cluster模式)
    HBase Mac OSX 安装笔记
    hbase centOS生产环境配置笔记 (1 NameNode, 1 ResourceManager, 3 DataNode)
    ssh 配置自动登录
    CentOS 修改线程数限制等(limits.conf)
    Hadoop Mac OSX 安装笔记
    centos7安装及部署zabbix监控
    设置linux中Tab键的宽度(可永久设置)
    基于NFS共享存储实现KVM虚拟机动态迁移
    KVM虚拟化平台环境部署
  • 原文地址:https://www.cnblogs.com/CoderHong/p/11258302.html
Copyright © 2011-2022 走看看