Swift属性(Properties)

Swift属性(Properties),第1张

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

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

下面以User类为大家介绍属性,先上全部类代码。

class Dataimporter {    var filename = "data.txt"    init() {        print("初始化")    }}private class Users {    // 有默认值的属性    var ID = 0    // 只指定类型的属性,有可能存储nil    var name:String?    // 懒加载,只是使用的时候才会初始化    lazy var importer = Dataimporter()    // get、set    var qqTemp:String = ""    var qq:String {        // 如果使用get和set则不能使用当前属性名赋值,以免死循环        // 获得        get {            print("获得")            return self.qqTemp        }        // 设置        set {            print("传入值:\(newValue)")            self.qqTemp = newValue        }    }    // 只读,read-only    var height: Int {        return 180    }    // 属性观察    var address:String = "" {        willSet {            print("新地址:\(newValue)")        }        dIDSet {            print("旧地址:\(oldValue)")        }    }    // 静态变量    static var storedTypeProperty = "Some value."}
基础属性

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

private class Users {    // 有默认值的属性    var ID = 0    // 只指定类型的属性,有可能存储nil    var name:String?}

使用:

let user = Users()// 有初始值print("\(user.ID)") // 0// 无初始值print("\(user.name)") // nil
懒加载属性

你可以给属性添加初始值,但是有的时候你添加的初始值是一个很大的对象,但你只希望使用它的时候才初始化。这就需要用到懒加载,懒加载属性就是当我们首次使用的时候才会创建并分配存储空间。懒加载的关键字是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则不能使用当前属性名赋值,以免死循环    // 获得    get {        print("获得")        return self.qqTemp    }    // 设置    set {        print("传入值:\(newValue)")        self.qqTemp = newValue    }}user.qq = "937447974" // 传入值:937447974print("\(user.qq)")   // 获得 937447974

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

只读属性

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

// 只读,read-onlyvar height: Int {    return 180}
属性观察

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

@H_419_234@willSet:设置前调用,newValue代表外部传入值; @H_419_234@dIDSet:设置后调用,dIDSet代码原始值。
// 属性观察var address:String = "" {    willSet {        print("新地址:\(newValue)")    }    dIDSet {        print("旧地址:\(oldValue)")    }}//属性观察 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_276_301@ 描述@H_276_301@
2015-10-29 根据 The Swift Programming Language (Swift 2.1)中的Classes and Structures总结

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

@H_404_317@ 总结

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

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

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1083217.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存