Sobes.tech
Junior — Middle

Hansı səbəblər Unowned istifadə etməyi bəzi vəziyyətlərdə daha az üstün edir?

sobes.tech Süni İntellekt

AI-dan cavab

iOS-da (Swift) unowned istifadə etmək, unowned ilə istinad olunan obyektin, istinad istifadə edilməzdən əvvəl sərbəst buraxıla biləcəyi (deallocated) riskində olan hallarda daha az tövsiyə olunur. weak-ə nisbətən, unowned opsional deyil və obyekt sərbəst buraxıldıqda nil olmur, buna görə belə bir istinada sərbəst buraxıldıqdan sonra daxil olmaq tətbiqin çökməsinə (runtime error) səbəb olacaq.

unowned-dən qaçınma səbəbləri:

  • Obyektin həyat dövrü hər zaman etibarlı olacağını təmin etmirsə.
  • Çətin qarşılıqlı istinadlar zamanı, obyektlərin sərbəst buraxılma sırası aydın deyilsə.

Belə hallarda, avtomatik olaraq nil olan weak istifadə etmək daha yaxşıdır və qəza hallarını qarşısını alır.

Nümunə:

class A {
    unowned var b: B
    init(b: B) { self.b = b }
}

class B {
    var a: A?
}

Əgər B obyekti A-dan əvvəl sərbəst buraxılsa, A-də b-yə daxil olmaq səhvə səbəb olacaq.