İçeriğe geç

Swift 3 ile dynamic var kullanımı

Swift 3

Merhabalar bu yazımda Swift 3 ile birlikte gelen değişken ön eki dynamic nedir ? ile ilgili bilgi verip örnek vereceğim.

Bazen uygulama içerisinde olayları duruma göre tetikletmek isteyebiliriz. Bu tetikleme işlemi KVO (Key value observing) denilen observer işlemi ile yapılında normal Strong var değişkenler bu tetiklenme durumunu algılayamazlar bu yüzden Swift‘e getirilen ön ek yardımcısı ile değişken dynamic hal alında tetikleme işlemini derleyici Runtime mod üzerinde algılayıp tepki verebilir.

Bu observe konusu hakkında bir yazı yazacağım genel olarak ancak bu yazımda bahsetmiş oldum.

Aşağıdaki vereceğim örnekte observe üzerine olacak dynamic değişken olayını algılamak için.

class Test:NSObject {
    dynamic var name:String!
}

var mycontext:Int = 0

observe işlemi için objective-c alt yapısına sahip esas olarak tüm nesnelerin türediği NSObject sınıfını alt sınıf olarak sınıfımıza ekliyoruz. Daha sonra dynamic bir değişken oluşturdum deneme amaçlı.

var obj:Test!
 obj = Test()
        
 obj.addObserver(self, forKeyPath: #keyPath(Test.name), options: .new, context: &mycontext)

Nesnelerimizi oluşturup addObserver fonksiyonu ile observerimizi oluşturalım dikkat ederseniz burda #keyPath kullandık diğer yazıda bahsettiğim yeniliklerden. Observe olarak tetiklenmeyi sağlayacak nesne Test sınıfı içerisindeki name değişkeni olmuş oldu.

 override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
        
        if context == &mycontext {
            print("tetiklendi")
        }
        
        
    }

observeValue fonksiyonunu UIViewController içerisinde çağırıyoruz. Tetiklenmeleri bu fonksiyon algılıyor.

@IBAction func click(_ sender: AnyObject) {
        obj.name = "Kenan"
    }

Buttona bağladıgım bu click fonksiyonuna bastığınız anda “tetiklendi” yazısı karşınıza çıkacaktır. Denemek için dynamic ön ekini değişkenden silip denerseniz tetiklenme işleminin gerçekleşmediğini görebilirsiniz.

 

Tarih:SwiftSwift 3

Bu yazı yorumlara kapalı.

Copyright © 2021 Kenan Atmaca