Junior
Lazy nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
lazy anahtar kelimesi, bir özelliğin gecikmeli başlatılması için kullanılır.
lazy ile tanımlanan bir özellik, yalnızca ilk erişimde başlatılır. Bu, şu durumlar için faydalıdır:
- Performans: nesnenin oluşturulması çok kaynak gerektiriyorsa, ancak her zaman gerekliyse.
- Başlatma sırasında döngüsel bağımlılıkların önlenmesi.
- Dış kaynaklar veya nesne oluşturulurken erişilemeyebilecek verilerle çalışma.
lazy özellikler şunlar olmalıdır:
- Değişken (
var), çünkü ilk erişimde değeri değişebilir. - İlk erişime kadar gözlemciler (
willSet,didSet) içermemelidir.
class HeavyResource {
init() {
print("Ağır kaynak başlatıldı")
// Kaynak yoğun başlatmayı simüle eder
Thread.sleep(forTimeInterval: 1)
}
}
class MyPresenter {
let name = "Presenter"
// lazy özellik, ilk kullanımdan sonra başlatılır
lazy var heavyResource: HeavyResource = {
print("Ağır kaynak oluşturuluyor")
return HeavyResource()
}()
init() {
print("\(name) başlatıldı")
}
func accessResource() {
print("Ağır kaynağa erişiliyor...")
_ = heavyResource // Burada lazy özelliğin başlatılması gerçekleşir
print("Kaynak erişildi.")
}
}
// Presenter başlatılır
let presenter = MyPresenter() // Çıktı: Presenter initialized
// Kaynak, gerçekten ihtiyaç duyulduğunda erişilir
presenter.accessResource()
/*
Çıktı:
Ağır kaynağa erişiliyor...
Ağır kaynak oluşturuluyor
Ağır kaynak başlatıldı
Kaynak erişildi.
*/
// Tekrar erişim, yeniden başlatmayı tetiklemez
presenter.accessResource()
/*
Çıktı:
Ağır kaynağa erişiliyor...
Kaynak erişildi.
*/