Утечка памяти в NWPathMonitor на iOS14
Я только что обнаружил воспроизводимую утечку памяти при использовании NWPathMonitor
на iOS14. Также воспроизводится на iOS13, и я подозреваю, что 12 тоже, но смог протестировать только iOS 13.
Чтобы воспроизвести утечку, все, что вам нужно сделать, это выделить экземпляр NWPathMonitor
(нет необходимости содержать ссылку на него), и как только вы это сделаете, вы увидите, что утечка появляется при отладке в инструментах с использованием шаблона Leaks или с использованием графика памяти Xcode. Это можно воспроизвести на симуляторе и на устройстве.
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Just allocate the instance and immediately the leaks will show in instruments
_ = NWPathMonitor()
return true
}
1 ответ
Изменить: я обнаружил, что это была моя ошибка - я забыл позвонить NWPathMonitor
с cancel()
метод в моем классе deinit
, что и послужило причиной утечки. Оставьте это здесь на случай, если кто-то еще сочтет это полезным в будущем.
Исходный ответ: Отзыв открыт с Apple и опубликован в OpenRadar: https://openradar.appspot.com/radar?id=4969412406804480. Надеюсь, это спасет кого-то еще, преследующего их за хвостом, как это сделал я, только для того, чтобы обнаружить, что это ошибка в сетевой структуре!