zoukankan      html  css  js  c++  java
  • swift:谈谈swift几种常见属性的区别

    一、前奏

    Swift作为一门新语言,经过几年的发展,逐渐趋于完善,目前已经更新到3.0版本,它汇集许多其他语言的特点,例如JS、Paython、C++等,完全区别于OC。个人感觉它没有完全的OOP和OOD的性质。

     

    二、谈谈几种属性的区别

    存储属性

    定义:实实在在存储常量和变量的

    计算属性

    定义:依赖于存储属性,通过计算得出来,它提供getter访问值,提供setter方法间接给其他属性或者变量设置值

    类属性

    定义:其本质其实就是一个全局属性,在类里限定了其作用域,用关键字static(用于结构体和枚举中)或者class(用于类中)修饰

    懒加载属性

    定义:该属性在使用的时候初始化一次,用关键字lazy修饰,必须进行初始化,非实例属性懒加载时在大括号{}后面要加上()

    全局属性

    定义:类外面的属性,作用域全局。类似于OC的static修饰的属性

    class ViewController: UIViewController {
        override func viewDidLoad() {
            super.viewDidLoad()
            //实例属性
            let p = Person()
          
    //存储属性
    print(p.age)
    //懒加载属性
    print(p.name)
    //类属性
    print(Person.height)
    //计算属性
    print(p.getAge)
    //全局属性
    print(commonProperty) } } //全局属性 var commonProperty = {()->String in print("Common Property1") return "Common Property" }()

    //类型属性,此处struct也可以是enum枚举
    struct AnyStructure{
       static var storedTypeProperty = "Some value"
    static var computedTypeProperty:Int{
    return 100
    }
    }
    class Person{ //类属性 class var height = {()->Int in print("Static Properties") return 170 }() //存储属性 var age = {()->Int in print("Store properties") return 26 }() //计算属性 var getAge:Int{ get{ print("Computed Properties") return age } } //懒加载属性 lazy var name = {()->String in print("Lazy Properties") return "Lazy liyang" }() //构造方法 init(){ print("init") } }

    三、总结:基于类,类的构造

    • 存储属性,最先被初始化
    • 构造方法,仅次于存储属性调用,可以在这里对存储属性进行赋值
    • 懒加载属性、类属性、全局属性都是在第一次使用的时候初始化一次,以后调用都不在初始化
    • warning:当懒加载属性是基于一个存储属性计算的时候,切勿使用懒加载属性,采用计算属性
  • 相关阅读:
    分页
    IBM TAM手册
    单点登录集成商。
    Using Web Services Instead of DCOM
    symantec endpoint protection SEP禁用所有usb设备,只允许部分例外
    桌面管理landesk太古案例
    AdventureWorks数据库的安装和NorthWind例子数据库下载
    IBM Tivoli Access Manager for ebusiness 6.1.1 Administration and Deployment
    word编辑长文档方法
    笔记本电源消耗测量
  • 原文地址:https://www.cnblogs.com/XYQ-208910/p/6241592.html
Copyright © 2011-2022 走看看