美文网首页
swift - 属性

swift - 属性

作者: Zz橙淞 | 来源:发表于2017-04-10 18:54 被阅读0次

/*
• 存储属性
• 计算属性
• 属性观察器
• 全局变量和局部变量
• 类型属性
*/

    //存储属性
    //简单来说,一个存储属性就是存储在特定类或结构体实例厘米昂的一个常量或者变量,存储属性可以是变量存储属性(用关键字var定义),也可以是常量存储属性(用关键字let定义)
    //下面的例子定义了一个名为 FixedLengthRange 的结构体,该结构体用于描述整数的范围,且这个范围值在被创 建后不能被修改.
    struct FixedLengthRange {
    
        var firstValue: NSInteger
        let length :NSInteger
    }
    var rangeOfThreeItems = FixedLengthRange(firstValue:0,length:3)
    rangeOfThreeItems.firstValue = 6
    
    //常用结构体的存储属性
    //如果创建了一个结构体的实例并将其赋值给一个常量,则无法修改实例的任何属性,即使有属性被声明为变量也不行:
    let rangeofFourItems = FixedLengthRange(firstValue:0,length:4)
    //该区间表示整数0,1,2,3
    rangeOfThreeItems.firstValue = 6
    
    
    
    //延迟存储属性
    //延迟存储属性是指当第一次被调用的时候才会计算其初始值的属性。在属性声明前使用 lazy 来标示一个延迟存 储属性。延迟属性很有用,当属性的值依赖于在实例的构造过程结束后才会知道影响值的外部因素时,或者当获得属性的初始值需要复杂或大量计算时,可以只在需要的时候计算它。
    
    class DataImporter {
    
        /*
         DataImporter 是一个负责将外部文件中的数据导入的类。 这个类的初始化会消耗不少时间。
         */
        var fileName = "data.txt"
        
    }
    
    class DataManager {
    
        lazy var importer = DataImporter()
        var data = [String]()
        
    }
    
    let manager = DataManager()
    manager.data.append("Some data")
    manager.data.append("Some more data")
    print(manager.importer.fileName)// DataImporter 实例的 importer 属性还没有被创建
    
    //计算属性
    //简化setter声明
    //只读计算属性
    /*只有 getter 没有 setter 的计算属性就是只读计算属性。只读计算属性总是返回一个值,可以通过点运算符访 问,但不能设置新的值。*/
    //读计算属性的声明可以去掉   关键字和花括号:
    
    struct Cuboid {
        var width = 0.0, height = 0.0, depth = 0.0
        var volume: Double {
            return width * height * depth
        }
    }
    let fourByFiveByTwo = Cuboid(width: 4.0, height: 5.0, depth: 2.0)
    print("the volume of fourByFiveByTwo is \(fourByFiveByTwo.volume)")
    // 打印 "the volume of fourByFiveByTwo is 40.0"
    
    //属性观察器
    /*
     • willSet在新的值被设置之前调用
     • didSet在新的值被设置之后立即调用
     */
    
    class StepCounter {
        var totalSteps: Int = 0 {
            willSet(newTotalSteps) {
                print("About to set totalSteps to \(newTotalSteps)")
            }
            didSet {
                if totalSteps > oldValue  {
                    print("Added \(totalSteps - oldValue) steps")
                } }
        } }
    let stepCounter = StepCounter()
    stepCounter.totalSteps = 200
    // About to set totalSteps to 200
    // Added 200 steps
    stepCounter.totalSteps = 360
    // About to set totalSteps to 360
    // Added 160 steps
    stepCounter.totalSteps = 896
    // About to set totalSteps to 896
    // Added 536 steps
    //全局变量和局部变量

相关文章

  • Swift笔记(一)属性、析构、调用OC单例

    目录 swift属性存储属性懒加载属性计算属性属性监听类型属性 swift析构函数 swift调用OC单例类方法 ...

  • Swift 属性

    Swift 属性 在Swift中属性主要分为存储属性、计算属性、延迟存储属性、类型属性这四种,并且Swift还提供...

  • Swift进阶(三)--- 属性

    Swift的属性 在swift中,属性主要分为以下几种: 存储属性 计算属性 延迟存储属性 类型属性 一:存储属性...

  • 浅谈 Swift 中的属性(Property)

    Properties in Swift 前言 Swift 中的属性分为存储属性与计算属性,存储属性即为我们平时常用...

  • Swift:基础(二十)属性

    Swift 属性 Swift 属性将值跟特定的类、结构或枚举关联。 属性可分为存储属性和计算属性: 存储属性和计算...

  • SwiftProperty Swift3.0 属性

    Swift Peoperty Swift中有下列几种属性存储属性(Stored properties):存储实例的...

  • OC的@property与Swift的存储属性/计算属性类比

    Swift中的计算属性/存储属性与OC中的@property   Swift中引入了存储属性、计算属性的概念,存储...

  • Swift 学习笔记(三)

    Swift属性 Swift属性将值跟特定的类,结构体,枚举关联。分为存储属性和计算属性,通常用于特定类型的实例。属...

  • Swift学习-进阶02

    swift对象本质,一个swift的对象默认占用16字节大小,在内存中的结构: swift类结构: 属性 存储属性...

  • Swift5.x- 方法(中文文档)

    引言 继续学习Swift文档,从上一章节:属性,我们学习了Swift属性相关的内容,如存储属性和计算属性set和g...

网友评论

      本文标题:swift - 属性

      本文链接:https://www.haomeiwen.com/subject/egasattx.html