Swift & React-Native 混编,内存泄漏问题解决

项目中集成了 RN,由于采用原生 & RN 混编的模式,业务上会频繁出现原生页面与 RN 页面切换的情况。但由于处理不当,导致退出 RN 页面时造成了大量内存泄漏,iPhone X 真机测试时内存一直上到 500多M(若再进出 RN 页面,泄漏会更多)。找了下原因,是因为原生代码里没释放 RCTBridge bridge 对象。

处理如下:
注:如果在退出页面前执行self.bridge.invalidate(),会出现闪白屏的问题,所以下面两种方法都是在完全退出 RN 页面时才执行self.bridge.invalidate() 方法。

1,如果 RN 页面是以 dismissViewController 的方式退出:

self.dismiss(animated: true, completion: {
        self.bridge.invalidate()
        self.bridge = nil
})

2,如果 RN 页面是在导航栈里 popViewController 方式退出的,则可以使用下面方法处理:

 CATransaction.begin()
 CATransaction.setCompletionBlock {
          self.bridge.invalidate()
          self.bridge = nil
  }
CATransaction.commit()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,165评论 1 32
  • 本篇主要涉及的是App和RN的混合开发环境搭建,对于基本的RN环境搭建请自行查阅文档。 这里需要着重注意的是全局依...
    2林子易2阅读 2,909评论 2 0
  • 使用App.png 本文结构 目前App的几种常见的开发模式 关于React-Native的一点小看法 React...
    ZeroJ阅读 5,314评论 0 22
  • 关于动机冲突四个类型的对比,做题时抓住每个冲突的不同特点,比如根据目标数量来进行选择,首先:比如只有一个目标,那么...
    木子火乐_4642阅读 151评论 0 0
  • 又是周末,我又带着孩子去单位写作业,我希望她能把事情做到前面,,所以,我对她说,你赶紧写作业,明天就是该玩就玩...
    万瑞莹阅读 140评论 0 0