Middle
Какво знаете за списъка с каптури в Swift?
sobes.tech AI
Отговор от AI
В Swift списъкът за улавяне се използва в затварянията (closures) за управление на улавянето на променливи от околния контекст, особено за да се избегнат цикли на силни препратки (retain cycles).
Списъкът за улавяне се записва в квадратни скоби преди тялото на затварянето и позволява да се уточни как точно ще бъдат уловени променливите — чрез силна препратка (strong), слаба (weak) или без собственик (unowned).
Пример:
class ViewController {
var name = "Swift"
lazy var closure: () -> Void = { [weak self] in
guard let self = self else { return }
print(self.name)
}
}
Тук [weak self] предотвратява задържането на силна препратка към self вътре в затварянето, което помага да се избегнат течове на памет.
Следователно, списъкът за улавяне е инструмент за контрол на жизнения цикъл на обектите, уловени от затварянето.