Merhabalar bu yazımda Swift ile ön ek olarak kullanılan Weak Değişkeninden bahsedip, örnek vereceğim.
Weak Değişkeni Lazy Veriables yazısındada açıkladığım gibi ARC sisteminde farklar yarattırıyor.
Direk aşağdaki örnek üzerinden açıklayayım.
class Person { var name:String init(name:String) { print("init") self.name = name } deinit { print("deinit") } } var obj:Person? = Person(name: "Kenan") // 1 var obj2:Person? = obj // 2 // var deneme = obj2 // 3 weak var wkveriable = obj2 obj = nil obj2 = nil // deinit
Yukardaki kod’da Person sınıfımız var. Bu sınıfı aşağıda 2 adet değişkene aktarmış olduk böylelikle referans sayımızı 2’e çıkarmış olduk. deneme adlı değişenide kullanırsak sayımız 3 olmuş olur.
Sınıfta bulunan deinit‘in devreye girmesi için tüm değişkenlerin hafızadan boşaltılması gerekli. Bu yüzden değişkenlerin değerini nil yaptık.
Weak ön ekli değişken kullandığımızda normalde referans değeri 3 olması gerekirken 2’de kalmış oldu. Yani dahil edilen değişkenin referansı 0 landığı zaman weak ön ekli değişkeninkide otomatik olarak 0 lanmış olur.
Normal olarak tanımlanan var değişkenler Strong yapıda olduğu için weak buna boyun eğemez ve diğer değişkenlerin referans hareketine göre çalışır. Böylelikle Sınıfın deinit fonksiyonu çalışmış olur.
Bu yazı yorumlara kapalı.