Вопрос проверяет понимание ARC, замыканий и жизненного цикла объектов при асинхронной работе.
Короткий ответ
weak self может стать nil к моменту выполнения замыкания. Чтобы избежать краша, нужно безопасно разворачивать self через guard let или if let. Также важно не выполнять логику, если объект уже деаллоцирован. Это нормальная и ожидаемая ситуация. Код должен быть готов к такому сценарию.
Длинный ответ
Зарегистрироваться
Развернутый ответ доступен только зарегистрированным пользователям.