Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Swift属性(Properties)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

属性关联特定的类、结构和枚举的值。存储的属性存储常量和变量的值作为实例的一部分。 下面以User类为大家介绍属性,先上全部类代码。 class DataImporter { var filename = "data.txt" init() { print("初始化") } } private class Users { // 有默认值的属性

@L_450_0@关联特定的类、结构和枚举的值。存储的@L_450_0@存储常量和变量的值作为实例的一部分。

下面以User类为大家介绍@L_450_0@,先上全部类代码

class DataImporter {

    var filename = "data.txt"

    init() {
        print("初始化")
    }
}

private class Users {

    // 有值的@L_450_0@
    var id = 0
    // 只指定类型的@L_450_0@,有可能存储nil
    var name:string?
    // 懒加载,只是使用的时候才会初始化
    lazy var importer = DataImporter()
    // get、set
    var qqTemp:string = ""
    var qq:string {
        // 如果使用get和set则不能使用当前@L_450_0@名赋值,以免死循环
        // 获得
        get {
            print("获得")
            return self.qqTemp
        }
        // 设置
        set {
            print("传入值:\(newvalue)")
            self.qqTemp = newValue
        }
    }
    // 只读,read-only
    var height: Int {
        return 180
    }
    // @L_450_0@观察
    var address:string = "" {
        willSet {
            print("新地址:\(newvalue)")
        }
        didSet {
            print("旧地址:\(oldvalue)")
        }
    }

    // 静态变量
    static var storedTypeProperty = "Some value."
}

基础@L_450_0@

在类和结构体中可以建立存储@L_450_0@,可以是常量、变量或枚举。也可以为@L_450_0@设置初始值或不设置初始值。

private class Users {
    // 有值的@L_450_0@
    var id = 0
    // 只指定类型的@L_450_0@,有可能存储nil
    var name:string?
}

使用:

let user = Users()

// 有初始值
print("\(user.id)") // 0
// 无初始值
print("\(user.Name)") // nil

懒加载@L_450_0@

你可以给@L_450_0@添加初始值,但是有的时候你添加的初始值是一个很大的对象,但你只希望使用它的时候才初始化。这就需要用到懒加载,懒加载@L_450_0@就是当我们首次使用的时候才会创建并分配存储空间。懒加载的关键字是lazy。

// 懒加载,只是使用的时候才会初始化
lazy var importer = DataImporter()

class DataImporter {

    var filename = "data.txt"

    init() {
        print("初始化")
    }
}

print("\(user.importer.fileName)") // 先输出"初始化",后输出"data.txt"

Getter和Setter

我们都知道点方法的实质是调用get和set方法,在swift中也有get和set方法

var qqTemp:string = ""
var qq:string {
    // 如果使用get和set则不能使用当前@L_450_0@名赋值,以免死循环
    // 获得
    get {
        print("获得")
        return self.qqTemp
    }
    // 设置
    set {
        print("传入值:\(newvalue)")
        self.qqTemp = newValue
    }
}

user.qq = "937447974" // 传入值:937447974
print("\(user.qq)")   // 获得 937447974

如上所示,在@L_450_0@中我们可以更加精确的控制get和set方法。在set中,newValue就是外部传入的值。

只读@L_450_0@

在swift中也支持@L_450_0@只读,简单点就是只写get方法,不写set方法。但是swift虑这种情况有更好的方式实现。

// 只读,read-only
var height: Int {
    return 180
}

@L_450_0@观察

有的时候,你可能想监听设置@L_450_0@的操作,同时又想使用当前@L_450_0@名。因为get和set中是不能使用当前@L_450_0@名的,鉴于这种情况,swift提供了两种操作符:

    @H_696_248@willSet:设置前调用,newValue代表外部传入值; @H_696_248@didSet:设置后调用,didSet代码原始值。
// @L_450_0@观察
var address:string = "" {
    willSet {
        print("新地址:\(newvalue)")
    }
    didSet {
        print("旧地址:\(oldvalue)")
    }
}

//@L_450_0@观察 willSet将设置,didSet已设置
user.address = "北京"   // 新地址:北京 旧地址:
user.address = "天安门" // 新地址:天安门 旧地址:北京

静态变量

在swift中也支持静态变量static,使用静态变量只需要使用类名。

// 静态变量
static var storedTypeProperty = "Some value."

// 静态变量
Users.storedTypeProperty = "static"
print("\(Users.storedTypeProperty)") // static

其他

资料

The Swift Programming Language (Swift 2.1)

文档修改记录

时间@H_604_301@ 描述@H_604_301@
2015-10-29 根据 The Swift Programming Language (Swift 2.1)中的Classes and Structures总结

版权所有:http://blog.csdn.net/y550918116j

大佬总结

以上是大佬教程为你收集整理的Swift属性(Properties)全部内容,希望文章能够帮你解决Swift属性(Properties)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。