<分区>
我是 swift 语言的新手。swift 提供了新的面向对象的特性属性观察器“willSet”和“didSet”。它与常见的 objective-c 属性有何不同。
标签 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"
iphone - 如何向 UIImageView 的子类添加自定义动画属性?
swift - for循环条件是否评估了Swift中的每个循环?
swift - 如何通过以函数方式乘以另一个数组来创建数组?
swift - 如何在 SpriteKit (Swift) 中获取施加在对象上的力
swift - 语法,== 运算符,当不在 if 语句中时。
properties - typescript 类型转换对象的属性