Photo by Jannis Brandt / Unsplash

DidSet ve WillSet

Swift Aug 6, 2022

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: ""
            )
        }
    }

}

Tags

Furkan Ozoglu

iOS Developer & Geomatics Engineer