swift - Swift语言中观察者属性didSet和willSet有什么用?

标签 swift properties

<分区>

我是 swift 语言的新手。swift 提供了新的面向对象的特性属性观察器“willSet”和“didSet”。它与常见的 objective-c 属性有何不同。

最佳答案

我使用属性观察器和更具体的 didSet 来处理各种事情。

一个示例可能是在 UIViewController 中,您有一个 UITableView 和一个数组,该数组包含您希望从中填充表格 View 的元素:

var persons: [Person]? = nil

现在,每次您更改 persons 数组中的内容时,您都希望重新加载 TableView 。

var persons: [Person]? = nil {
    didSet {
        tableView.reloadData()
    }
}

另一个例子可以是@IBOutlets,如果你想设置文本颜色、字体、背景颜色等等。通常您会在 viewDidLoad() 或类似的地方执行此操作,但现在您也可以在 didSet 中执行此操作,如下所示:

    @IBOutlet weak var headerLabel: UILabel! {
        didSet {
            headerLabel.font = UIFont.systemFontOfSize(15)
            headerLabel.textColor = UIColor.blueColor()
            headerLabel.text = NSLocalizedString("logIn", comment: "")
        }
    }

现在,当您的 headerLabel 被初始化时,这些属性就被设置了。

希望这能让您了解如何使用属性观察器:)

关于swift - Swift语言中观察者属性didSet和willSet有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39292097/

相关文章:

javascript - TypeScript:数组属性在填充时导致此错误: "TypeError: Cannot set property ' 0' of undefined"

java - 在兄弟目录中加载外部属性文件

iphone - 如何向 UIImageView 的子类添加自定义动画属性?

swift - for循环条件是否评估了Swift中的每个循环?

swift - 如何通过以函数方式乘以另一个数组来创建数组?

swift - 如何在 SpriteKit (Swift) 中获取施加在对象上的力

swift - 语法,== 运算符,当不在 if 语句中时。

properties - typescript 类型转换对象的属性

C# 设置程序集中所有类型都可访问的访问器,并仅获取派生类型的访问器。如何?

ios - 无法将需要作为 UICollectionView 单元格的 View 出队