Middle+
Чӣ гуна optional дар ёддошт дар Swift нигоҳ дошта мешавад?
sobes.tech AI
Ҷавоб аз AI
Опционал дар Swift дар ёдгирӣ дар ёддошт бо яке аз ду роҳ нигоҳ дошта мешавад:
-
Барои намудҳое, ки протоколи
_ObjectiveCBridgeable-ро иҷро намекунанд: Намояндагии Optionals хурд/бузург.- Optional хурд: Агар андозаи арзиш аз андозаи ишоракунӣ хурдтар ё баробар бошад, Optional як байт ба андозаи навъи барои нигоҳ доштани рамз (Мувҷуд/Ноқувват) илова мекунад.
- Optional бузург: Агар андозаи арзиш аз андозаи ишоракунӣ калонтар бошад, Optional ду "слайт" дар ёдгирӣ истифода мебарад: яке барои арзиш (агар мавҷуд бошад) ва дигар барои рамзи мавҷудият. Ин метавонад ду қисмати ҳамҷояи ёдгирӣ ё, дар ҳолатҳои мураккабтар, истинод ба арзиши дар кучаи ёдгирӣшуда бошад.
-
Барои намудҳое, ки протоколи
_ObjectiveCBridgeable-ро иҷро мекунанд (масалан, синфҳо, баъзе сохторҳо): Намояндагии ишоракунии Nullable.- Агар намуд синф бошад ё метавонад ҳамчун ишоракунии Objective-C пешниҳод шавад, Optional аз он истифода мебарад, ки ишоракунӣ метавонад
nilбошад. Дар ин ҳолат,nilдар Optional ҳамчун ишоракунӣ нолӣ нишон дода мешавад, ва Optional ғайри-nilҳамчун ишоракунӣ ба объект. Ин дар ёдгирӣ самараноктар аст, зеро талаб намекунад рамзи иловагӣ.
- Агар намуд синф бошад ё метавонад ҳамчун ишоракунии Objective-C пешниҳод шавад, Optional аз он истифода мебарад, ки ишоракунӣ метавонад
Дар маҷмӯъ, 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 хурд/бузург