Junior
Swift-ში weak მეხსიერების მოდიფიკატორი რა არის?
sobes.tech AI
პასუხი AI-სგან
weak ئۆزگەرگۈچىسى نىڭ ئىشلىتىلىشى، قۇۋۋەتلىك ئۇلاش سىكللىرىنى (reference cycles) بوزۇش ئۈچۈن ئىشلىتىلىدۇ؛ بىر ئۆبژېكتنىڭ باشقا بىر ئۆبژېكتقا قۇۋۋەتلىك ئۇلىنىشى بولسا، ۋە بۇ ئۆبژېكت قايتا ئۆزىگە قۇۋۋەتلىك ئۇلىنىشقا ئىگە بولسا.
weak نىڭ ئاساسىي ئالاھىدىلىكى:
- ئۇلاش سانىنى كۆپەيتمەيدۇ:
weakنىڭ ئىشلىتىلىشى، ئۆبژېكتقا قۇۋۋەتلىك ئۇلىنىشلار سانىنى كۆپەيتمەيدۇ. nilبولۇشى مۇمكىن: زەئىف ئۇلىنىش (Optional) بولۇپ، ئۆبژېكت قايتا دەئىنشىياللاشتۇرۇلغاندا، ئاپتوماتىكnilبولىدۇ.- ئاتا/بالا مۇناسىۋىتى ئۈچۈن ئىشلىتىلىدۇ: كۆپىنچە، بالىلار ئۆبژېكتنىڭ ئاتا-ئانىسىغا ئۇلىنىشى بولسا، قۇۋۋەتلىك ئۇلىنىش سىكللىرىنى ئالدىنى ئېلىش ئۈچۈن ئىشلىتىلىدۇ.
varدەپ ئېلان قىلىشى كېرەك: چۈنكى زەئىف ئۇلىنىشnilبولۇشى مۇمكىن، ئۇنى ئۆزگەرگۈچى (var) دەپ ئېلان قىلىش كېرەك،letئەمەس.
ئىشلىتىش مىسالى:
class Person {
let name: String
var apartment: Apartment?
init(name: String) {
self.name = name
print("\(name) باشلىنىۋاتىدۇ")
}
deinit {
print("\(name) تاماملاندى")
}
}
class Apartment {
let unit: String
weak var tenant: Person? // زەئىف ئۇلىنىش
init(unit: String) {
self.unit = unit
print("مۇشۇ \(unit) باشلىنىۋاتىدۇ")
}
deinit {
print("مۇشۇ \(unit) تاماملاندى")
}
}
Apartment كلاسسىدا weak var tenant: Person? بولمىسا، كۈچلۈك ئۇلىنىش سىكللىرى يارىلىدۇ، ۋە Person ۋە Apartment نۇسخىلىرى، باشقا كۈچلۈك ئۇلىنىشلار بولمىغاندا، deinitialization بولمايدۇ. weak نىڭ ياردىمى بىلەن، Person نۇسخىسى deinitialization بولغاندا، Apartment نىڭ ئىچىدىكى tenant ئۇلىنىشى ئاپتوماتىك nil بولىدۇ.