używam techniki dostarczone przez this SO answer wstępnego ładowania jakiś URL w SFSafariViewController takiego:Jak poprawnie usunąć SFSafariViewController jako kontroler widoku podrzędnego?
addChildViewController(svc)
svc.didMoveToParentViewController(self)
view.addSubview(svc.view)
I próbuję wyjąć regulator Safari widok z następującego kodu:
svc.willMoveToParentViewController(nil)
svc.view.removeFromSuperview()
svc.removeFromParentViewController()
Teraz mogę wstępnego załadowania adres URL i pokaż widok Safari bez problemu. Jednak po wielokrotnym powtórzeniu procesu (preload/show/remove) (prawdopodobnie 30+ razy) aplikacja ulegnie awarii z powodu jakiegoś problemu z pamięcią, ponieważ dziennik pokazuje Memory level is not normal or this app was killed by jetsam
, gdy aplikacja się zawiesza.
Przed katastrofą, widziałem kilka dzienników o ostrzeżeniach możliwe-wyciek:
<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
robię to poprawnie po usunięciu kontrolera Safari View? Czy czegoś brakuje? Lub jakiejkolwiek sugestii, aby obejść ten problem?
próbował sugerowanej kolejności, ale nadal ten sam problem pozostaje. –
Czy mógłbyś użyć WKWebkitView i dodać go jako podgląd do głównego VC zamiast używać SVC? –
nie, używanie WKWebkitView to zupełnie inna sprawa. –