Sobes.tech
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 вътре в затварянето, което помага да се избегнат течове на памет.

Следователно, списъкът за улавяне е инструмент за контрол на жизнения цикъл на обектите, уловени от затварянето.