
Escaping closure
🟢lvl: jun
Это замыкание, которое может пережить область блока кода, в который оно передается. По-умолчанию наши функции будут non-escaping, но если клоужер сохранен в другом блоке кода или запущен позже в других замыкания, то компилятор потребует выставить маркер escaping.
Чтобы наш клоужер мог "убежать" мы можем:
1️⃣ Отправить выполняться клоужер в другой очереди в многопоточности. Ну, или в той же, но ассинхронно
2️⃣ Хранение замыкания за пределами функции.
🅰️ Почему важно знать, что такое убегающее замыкание?
Еscaping closure может привести к reference cycle, если мы не используем weak, unowned ссылки для захвата сильных ссылок.
#lvl_jun
🟢lvl: jun
Это замыкание, которое может пережить область блока кода, в который оно передается. По-умолчанию наши функции будут non-escaping, но если клоужер сохранен в другом блоке кода или запущен позже в других замыкания, то компилятор потребует выставить маркер escaping.
Чтобы наш клоужер мог "убежать" мы можем:
1️⃣ Отправить выполняться клоужер в другой очереди в многопоточности. Ну, или в той же, но ассинхронно
2️⃣ Хранение замыкания за пределами функции.
🅰️ Почему важно знать, что такое убегающее замыкание?
Еscaping closure может привести к reference cycle, если мы не используем weak, unowned ссылки для захвата сильных ссылок.
#lvl_jun