如何处理 React Native iOS 中的内存警告?

Posted

技术标签:

【中文标题】如何处理 React Native iOS 中的内存警告?【英文标题】:How to handle memory warnings in React Native iOS? 【发布时间】:2020-03-06 00:59:22 【问题描述】:

背景:我正在 Swift 中实现一个原生 ios 地图组件,以便在我的 React Native 应用程序中使用。当用户缩放/平移时,它会延迟加载图块到地图上,这会导致内存使用量逐渐增加。

问题: 有时,内存使用率过高,我需要清除切片缓存以将其恢复。在 iOS 中,我知道您可以在 UIViewController 中实现 didReceiveMemoryWarning 以释放一些内存,但是 React Native 的原生 iOS 组件没有 UIViewController,只有 UIView

已尝试:我已尝试在 React Native 级别监听内存警告(建议 here),然后调用 RCT_EXTERN_METHOD 公开的本机方法以释放一些内存。但是,我宁愿原生组件在清理内存方面自行处理。

TL;DR:如何在 iOS 级别处理 React Native“原生 iOS”组件的内存警告?

【问题讨论】:

您能否提供更多关于将图块加载到地图上的详细信息,可能还包括代码,哪个组件拥有/管理这些图块? 【参考方案1】:

但是,我宁愿原生组件自行处理 清理内存。

如果您在UIViewController(例如TileViewController)的本机子类中保存和管理磁贴,那么最简单的方法是进行如下清理

class TileViewController: UIViewController 

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

        // clean up cached tiles here
    

【讨论】:

以上是关于如何处理 React Native iOS 中的内存警告?的主要内容,如果未能解决你的问题,请参考以下文章

react native 如何处理对象和数组?

React Native - 如何处理 TextInput onChangeText 事件在执行函数之前等待?

React Native:您如何处理使屏幕顶部的图形时间等难以看到的问题?

如何处理第三方组件依赖与 react native 或其他组件冲突?

浏览器 API 和 react-native 应用程序 - 如何处理身份验证?

由于 React Native 使用像素或百分比作为单位,我们如何处理大文本输入的可访问性