Я использую метод, предоставленный этим ответом SO, для предварительной загрузки некоторого URL-адреса в SFSafariViewController следующим образом:
addChildViewController(svc)
svc.didMoveToParentViewController(self)
view.addSubview(svc.view)
И я пытаюсь удалить контроллер Safari View со следующим кодом:
svc.willMoveToParentViewController(nil)
svc.view.removeFromSuperview()
svc.removeFromParentViewController()
Теперь я могу предварительно загрузить URL-адрес и без проблем показать Safari View. Однако после того, как я повторю процесс (предварительная загрузка/показ/удаление) несколько раз (вероятно, 30+ раз), приложение вылетит из-за какой-то проблемы с памятью, потому что журнал показывает Memory level is not normal or this app was killed by jetsam
при сбое приложения.
Перед сбоем я видел несколько логов с предупреждениями о возможных утечках:
<Warning>: notify name "UIKeyboardSpringBoardKeyboardShow" has been registered 20 times - this may be a leak
<Warning>: notify name "com.apple.SafariViewService-com.apple.uikit.viewService.connectionRequest" has been registered 20 times - this may be a leak
Правильно ли я делаю это при удалении контроллера Safari View? Я что-то упускаю? Или любое предложение обойти эту проблему?