Как работают capture lists в замыканиях Swift и в чём различия между strong, weak и unowned семантиками захвата при предотвращении retain cycles? — ДейлиПреп