Как обрабатывать предупреждения памяти в React Native iOS? - PullRequest
0 голосов
/ 06 марта 2020

Справочная информация: Я реализую собственный компонент карты iOS в Swift для использования в моем приложении React Native. Он лениво загружает плитки на карту по мере того, как пользователь перемещается, что приводит к постепенному увеличению использования памяти.

Проблема: Иногда использование памяти становится слишком высоким, и мне нужно очистите кэш тайлов, чтобы вернуть его обратно. В iOS я понимаю, что вы можете реализовать didReceiveMemoryWarning в UIViewController для освобождения некоторой памяти, но нативные iOS компоненты для React Native не имеют UIViewController, только UIView.

Попытка: Я пытался прослушивать предупреждения памяти на уровне React Native (предлагается здесь ), а затем вызывать собственный метод, предоставляемый RCT_EXTERN_METHOD, для освобождения немного памяти. Однако я бы предпочел, чтобы нативный компонент заботился о себе с точки зрения очистки памяти.

TL; DR: Как обрабатывать предупреждения памяти на уровне iOS для Реагировать на собственный "нативный" компонент 1027 *?

1 Ответ

2 голосов
/ 09 марта 2020

Однако я бы предпочел, чтобы нативный компонент позаботился о чистоте памяти.

Если вы держите и управляете плитками в собственном подклассе UIViewController (например, . TileViewController), тогда самый простой способ - выполнить очистку, как показано ниже:

class TileViewController: UIViewController {

    // this called automatically on system memory warning
    override func didReceiveMemoryWarning() { 
        super.didReceiveMemoryWarning()

        // clean up cached tiles here
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...