Sobes.tech
Middle+

Чӣ гуна optional дар ёддошт дар Swift нигоҳ дошта мешавад?

sobes.tech AI

Ҷавоб аз AI

Опционал дар Swift дар ёдгирӣ дар ёддошт бо яке аз ду роҳ нигоҳ дошта мешавад:

  1. Барои намудҳое, ки протоколи _ObjectiveCBridgeable-ро иҷро намекунанд: Намояндагии Optionals хурд/бузург.

    • Optional хурд: Агар андозаи арзиш аз андозаи ишоракунӣ хурдтар ё баробар бошад, Optional як байт ба андозаи навъи барои нигоҳ доштани рамз (Мувҷуд/Ноқувват) илова мекунад.
    • Optional бузург: Агар андозаи арзиш аз андозаи ишоракунӣ калонтар бошад, Optional ду "слайт" дар ёдгирӣ истифода мебарад: яке барои арзиш (агар мавҷуд бошад) ва дигар барои рамзи мавҷудият. Ин метавонад ду қисмати ҳамҷояи ёдгирӣ ё, дар ҳолатҳои мураккабтар, истинод ба арзиши дар кучаи ёдгирӣшуда бошад.
  2. Барои намудҳое, ки протоколи _ObjectiveCBridgeable-ро иҷро мекунанд (масалан, синфҳо, баъзе сохторҳо): Намояндагии ишоракунии Nullable.

    • Агар намуд синф бошад ё метавонад ҳамчун ишоракунии Objective-C пешниҳод шавад, Optional аз он истифода мебарад, ки ишоракунӣ метавонад nil бошад. Дар ин ҳолат, nil дар Optional ҳамчун ишоракунӣ нолӣ нишон дода мешавад, ва Optional ғайри-nil ҳамчун ишоракунӣ ба объект. Ин дар ёдгирӣ самараноктар аст, зеро талаб намекунад рамзи иловагӣ.

Дар маҷмӯъ, Optional метавонад каме бештар ҷой гирад, нисбат ба навъи асосӣ (Optional хурд/бузург), ё ҳамон андоза бо ишоракунӣ (Ишоракунии Nullable). Намояндагии мушаххас аз ҷониби компилятор вобаста ба навъ ва қобилияти он ҳамчун ишоракунии nullable пешниҳод кардан муайян карда мешавад.

// Мисол: Int не `_ObjectiveCBridgeable`, истифода мебарад Optional хурд/бузург
var maybeInt: Int? = 10 // Мумкин аст, ки Optional хурд бошад

// Мисол: String `_ObjectiveCBridgeable`, метавонад истифода кунад Ишоракунии Nullable
var maybeString: String? = "Hello" // Мумкин аст, ки Ишоракунии Nullable

// Мисол: Протокол (Any) не `_ObjectiveCBridgeable`, истифода мебарад Optional хурд/бузург
var maybeAny: Any? = 5 // Optional хурд/бузург