ProgramlamaiOS geliştirici

Swift'te optional nedir? Güvenli değer çıkarma mekanizmaları ve optional ile çalışmanın tipik tuzakları hakkında konuşun.

Hintsage yapay zeka asistanı ile mülakatları geçin

Cevap.

Optional — Swift'te bir T tipinde değer içerebilen veya hiç değer içermeyen (nil) özel bir türdür. T? olarak yazılır. Değişkenin değer içermeyebileceğini açıkça belirtmeyi sağlar ve derleme aşamasında değer kontrolü garantiler.

Değer çıkarma mekanizmaları:

  • Optional binding:
let str: String? = "merhaba" if let s = str { print(s) }
  • Guard binding:
guard let s = str else { return } print(s)
  • Force unwrapping:
let s = str!

(MAY cause runtime crash if value is nil)

  • Optional chaining:
let length = str?.count
  • Nil coalescing operator (??):
let value = str ?? "varsayılan"

Kandırmaca soru.

String türündeki bir değişkene nil atamak mümkün mü ve ne olur?

Cevap: Hayır, sıradan türdeki bir değişkene (String) nil atamak mümkün değildir. Sadece optional nil olabilir, aksi takdirde derleme hatası oluşur.

Örnek:

var a: String // a = nil // derleme hatası: Nil cannot be assigned to type 'String' var b: String? b = nil // TAMAM

Konunun inceliklerini bilmemekten kaynaklanan gerçek hata örnekleri.


Hikaye

Uygulamada, veritabanından her zaman doğru cevap geleceğini varsayarak değer üzerinde force unwrapping yapıldığında, alan yoksa çökme meydana geliyordu. Hata, optional binding ile ek kontrol eklenerek çözüldü.


Hikaye

Push bildirimleri gönderilirken kullanıcı adı non-optional bir değişkende saklandığı için API'den boş isim geldiğinde uygulama çöküyordu. Analiz sonucunda tür optional olarak değiştirildi, nil işleme eklendi.


Hikaye

Projede optional bir değerin bir fonksiyona geçirilmesi sırasında, argüman optional türde olmadan ilan edilmişti. Gizli hatalar ve çökme meydana geldi. Değişiklik yapıldı: parametre türü optional oldu, değer kontrolü eklendi.