İngilizcesi “Property Observers” olan özellik gözlemleyiciler, bir property’nin değerini sürekli gözlemlerler ve bu değer değiştiği zaman tetiklenirler. Property’nin değeri her değiştiğinde gözlemleyici tetiklenir.
2 adet gözlemleyici vardır.
- willSet : Değer kaydedilmeden hemen önce tetiklenir.
- didSet : Yeni değer kaydedildikten hemen sonra tetiklenir.
Bu gözlemleyicilerin kullanım yerleri, uygulamalardaki ihtiyaçlara göre belirlenir. Bir değişkene değer atanmadan önce bir işlem yapılması gerekiyorsa, örneğin atanacak değer bir yere loglanacak, hesaplanacak, vs ise willSet kullanılır.
Değer ataması yapıldıktan sonra yine kullanım gerekiyorsa, örneğin atanan değerin hesaplanması, total değerin hesaplanması, loglama vs. bunlar için de didSet kullanılır.
Konumuzun daha kolay anlaşılabilmesi için bir adım sayar algoritması anlatacağım. Algoritmamız çok basit bir işlem yapıyor. Adım sayarın toplam değerini değiştiriyor.
Peki bu algoritmada willSet ve didSet’i nasıl kullanacağız?
Algoritmamızın yapmış olduğu adım sayarın toplam değerini değiştirme işlemini yaparken, toplam değer kaydedilmeden hemen önce “değerin kaç olarak” kaydedileceğini konsola yazdıracağız. Bu işlemi yaparken de willSet kullanacağız.
Toplam adımsayar değerinden eski değeri çıkararak da değerin kaç artırıldığını didSet kullanarak konsola yazdıracağız.
Bu algoritma için çalışacak Swift kod bloğu şu şekildedir:
class StepCounter { var totalSteps: Int = 0 { willSet(newTotalSteps) { println("Toplam Adım Değeri (newTotalSteps) olarak kaydedilmek üzere.") } didSet { if totalSteps > oldValue { println("Toplam değere (totalSteps - oldValue) adım daha eklendi.") } } } } let stepCounter = StepCounter() stepCounter.totalSteps = 150 // Toplam Adım Değeri 150 olarak kaydedilmek üzere. // Toplam değere 150 adım daha eklendi. stepCounter.totalSteps = 260 // Toplam Adım Değeri 260 olarak kaydedilmek üzere. // Toplam değere 110 adım daha eklendi. stepCounter.totalSteps = 635 // Toplam Adım Değeri 635 olarak kaydedilmek üzere. // Toplam değere 375 adım daha eklendi.
Örnekte görüldüğü gibi, ilk olarak toplam adım değerini 150 yaptık, bu da demek oluyor ki toplam değere 150 eklemiş olduk.
Daha sonra toplam değer 260 oluyor. Toplam değer önceden 150 idi, sonra 260 oldu yani 110 adım daha eklendi.
Yine aynı şekilde toplam değerimiz 635 ve eklenen değerimiz 375 oldu.
Tüm bu işlemleri willSet ve didSet kullanarak konsola yazdırmış olduk.
[…] Property Observers (Özellik Gözlemleyiciler) […]