当前位置: 首页 > 面试题库 >

swift willSet didSet并在属性中获取set方法

闻人宜
2023-03-14
问题内容

在属性内处理此时willSet- didSetget- 之间有什么区别set

从我的角度来看,它们两者都可以为属性设置值。什么时候,为什么,我应该使用willSet- didSet,什么时候get- set

我知道for willSetdidSet的结构如下:

var variable1 : Int = 0 {
    didSet {
        println (variable1)
    }
    willSet(newValue) {
    ..
    }
}

var variable2: Int {
    get {
        return variable2
    }
    set (newValue){
    }
}

问题答案:

什么时候以及为什么要使用willSet / didSet

  • willSet在值存储 之前 被调用。
  • didSet新值存储 立即调用。

考虑带有输出的示例:

var variable1 : Int = 0 {
        didSet{
            print("didSet called")
        }
        willSet(newValue){
            print("willSet called")
        }
    }

    print("we are going to add 3")

     variable1 = 3

    print("we added 3")

输出:

we are going to add 3
willSet called
didSet called
we added 3

它像前/后条件一样工作

另一方面,get如果要添加例如只读属性,则可以使用:

var value : Int {
 get {
    return 34
 }
}

print(value)

value = 2 // error: cannot assign to a get-only property 'value'


 类似资料:
  • 问题内容: 我有一个带有 伪 属性或 特殊 属性的对象,该属性可以用三种不同的方式命名(注意:我不控制生成该对象的代码) 属性中的值(取决于设置的是哪个)完全相同,我需要获取该值以进行进一步处理,因此根据数据源,我可以得到类似以下内容的值: 要么 要么 我对获取感兴趣,但不幸的是,该对象中不存在属性。因此,我为获得该价值而结束的工作只是打了一堆电话。假设可能性只有三种,则代码如下所示: 现在,我想

  • 本文向大家介绍JavaScript获取并更改input标签name属性的方法,包括了JavaScript获取并更改input标签name属性的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript获取并更改input标签name属性的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的javascript程序设计有所帮助。

  • 主要内容:Jsoup 获取属性 语法,Jsoup 获取属性 说明,Jsoup 获取属性 示例以下示例将展示在将 HTML 字符串解析为 Document 对象后获取 dom 元素属性的方法的使用。 Jsoup 获取属性 语法 document : 文档对象代表 HTML DOM。 Jsoup : 解析给定 HTML 字符串的主类。 html : HTML 字符串。 link : 元素对象表示表示锚标记的 html 节点元素。 link.attr() : attr(attribute) 方

  • 接口说明 获取shp属性 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 GET /wish3dearth/api/material/shp/v1.0.0/getShpAttributeByMaterilId 是否需要登录 否 请求字段说明 参数 类型 请求类型 是否必须 说明 materialId string query 是 素材ID 响

  • 接口说明 获取shp属性 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 如开启https功能,请求地址的协议应改为https,如:https://www.example.com/wish3dearth/api/access/v1.0.0/getLicenseInfo API地址 GET /wish3dearth/api/material/shp/v1.

  • 问题内容: 基本上,我有一个带有的表单,用于选择要使用的数据集(值分别为“ m”,“ f”和“ c”)。然后,我有一个字典/对象,其数据位于: 现在我需要/ / 但我不知道如何使用语法-我已经试过: 什么是正确的语法/方法? 问题答案: 由于您是通过变量引用属性,因此需要使用括号表示法。 …这与您传递字符串时使用的表示法相同。