DidSet ve WillSet
DidSet
ve WillSet
özellik gözlemleyiciler olarak isimledirebiliriz. (Property Observer) Property'lerin değerini sürekli olarak gözlemleyerek eğer bir değer değişikliği varsa tetiklenen kod parçasıdır. İsminden de anlaşılacağı gibi
- willSet , bir özellik değişmeden hemen önce çalışır.
- didSet , özellik değiştikten hemen sonra çalışır.
var name: String? {
willSet {
print("Name will change now.")
}
didSet {
print("Name was changed.")
}
}
name = "Jack"
//Name will change now.
//Name was changed.
Eğer öncesinde bir değer bulunuyorsa,
var name: String = "Alice" {
willSet {
print("Name will from \(name) to \(newValue)")
}
didSet {
print("Name changed from \(oldValue) to \(name)")
}
}
name = "Jack"
//Name will from Alice to Jack
//Name changed from Alice to Jack
Kullanımı akılda kalıcı olması için birkaç farklı örnek daha,
var score = 0 {
didSet {
scoreLabel.text = "Score: \(score)"
}
}
internal final class NotesViewController: UIViewController {
// MARK: - Properties
@IBOutlet private var tableView: UITableView! {
didSet {
// Configure Table View
tableView.delegate = self
tableView.dataSource = self
tableView.showsVerticalScrollIndicator = false
// Register Note Table View Cell
tableView.register(
NoteTableViewCell.self,
forCellReuseIdentifier: NoteTableViewCell.reuseIdentifier
)
}
}
// MARK: -
@IBOutlet private var messageLabel: UILabel! {
didSet {
// Configure Message Label
messageLabel.numberOfLines = 0
messageLabel.font = .systemFont(ofSize: 15.0)
messageLabel.text = NSLocalizedString(
"notes_message_no_notes", comment: ""
)
}
}
}