Junior — Middle
Можете ли да обясните концепцията за Capture List в контекста на езика Swift и нейното приложение?
sobes.tech AI
Отговор от AI
В Swift, Capture List е механизъм, който позволява да контролирате как една затваряне (closure) улавя променливи от околния контекст, особено за управление на паметта и предотвратяване на цикли на задържане.
Capture List се записва в квадратни скоби преди тялото на затварянето и указва как точно да се улавят променливите: с силна връзка (strong), слаба (weak) или без собственик (unowned).
Пример:
class ViewController {
var name = "Main"
func setup() {
let closure = { [weak self] in
guard let self = self else { return }
print(self.name)
}
closure()
}
}
Тук [weak self] предотвратява силен цикъл на задържане между затварянето и обекта self, което е важно за правилното освобождаване на паметта.
По този начин, Capture List помага да се управлява жизненият цикъл на обектите вътре в затварянията и да се избегнат течове на памет.