İçeriğe geç

Swift ile Unowned ve Weak Self Closures

swift

Merhabalar bu yazımda Unowned ve Weak değişken türlerini Swift programlama dilinde nasıl Closures yardımıyla kullanırız buna örnek vereceğim.

Bundan önceki yazılarımdada bahsettiğim türleri Closures’de kullanabiliyoruz. Böylelikle Dealloc işlemini kolay bir şekilde Class için gerçekleştirmiş oluruz.

Aşağıdaki verdiğim örneği inceleyebilirsiniz.

class A {
    
    var id:Int
    
    lazy var idContol: () -> Bool = { [unowned self] () -> Bool in
        
        return self.id % 2 == 0 ? true : false
        
    }
    
   lazy var returno: () -> Int = { [weak self] () -> Int in
    
        return self!.id
        
    }
  
    
    init(id:Int) {
        
        self.id = id
        
    }
    
    deinit {
        
        print("deinit A")
    
    }
    
}

// Unowned deinit

var obj:A? = A(id: 423728)
obj?.idContol()
obj = nil // deinit

// Weak deinit

var obj2:A? = A(id: 213632)
obj2!.returno()
obj2 = nil // deinit

Yukarda yazdığım closures’lerde [unowned self] şeklinde belirtilen olay return edilen değişkeni unowned yapıya dönüştürür böylelikle değişken strong yapıdan unowned yapıya geçtiği için referance counter düşürme işlemi gerçekleştirilmiş olur.

Lazy kullanılmasının sebebide sadece biz çağırdığımızda unowned veya weak’leme işleminin gerçekleştirilmesinin sağlanması. Bu ön eki kullanmassak hata verecektir.

Tarih:Swift

Bu yazı yorumlara kapalı.

Copyright © 2020 Kenan Atmaca