А Вы не замеряли, есть ли заметные накладные расходы по производительности при использовании этого подхода?
Какие-то расходы есть, конечно, но они не сравнимы с последствиями утечки
Насколько часто Вы пользуетесь этими аннотациями? Только для ViewModel или для каких-то более мелких объектов тоже?
В основном – для моделей. Обычно, если "утекает" что-то мелкое внутри модели – сама модель тоже не освобождается. Однако, ограничений нет.
Вы оставляете эти проверки в release-версии?
Нет, в реальном коде проверки закрыты аннотациями #if DEBUG || ADHOC
Но ведь не совсем? Instruments позволяет именно обнаружить утечки, они "подсвечиваются" по ходу работы приложения. Или применительно к SwiftUI этот инструмент работает не очень хорошо? Я в SwiftUI пока не пробовал им пользоваться.
В самом Xcode примерно также, только нужно останавливать выполнение. Однако, не это главное. В описанном варианте утечку может обнаружить QA-инженер, тестирующий на реальном устройстве, а не только разработчик в Xcode/Instruments, когда специально этим озаботится. Разработчик может спокойно писать код, зная, что утечки будут найдены в процессе тестирования.
Какие-то расходы есть, конечно, но они не сравнимы с последствиями утечки
В основном – для моделей. Обычно, если "утекает" что-то мелкое внутри модели – сама модель тоже не освобождается. Однако, ограничений нет.
Нет, в реальном коде проверки закрыты аннотациями #if DEBUG || ADHOC
В самом Xcode примерно также, только нужно останавливать выполнение. Однако, не это главное. В описанном варианте утечку может обнаружить QA-инженер, тестирующий на реальном устройстве, а не только разработчик в Xcode/Instruments, когда специально этим озаботится. Разработчик может спокойно писать код, зная, что утечки будут найдены в процессе тестирования.
Если объект LeakingViewModel "утечёт" – его deinit не будет вызван, соответственно, проверка не состоится.