項(xiàng)目中集成了 RN亥鬓,由于采用原生 & RN 混編的模式完沪,業(yè)務(wù)上會頻繁出現(xiàn)原生頁面與 RN 頁面切換的情況。但由于處理不當(dāng)嵌戈,導(dǎo)致退出 RN 頁面時造成了大量內(nèi)存泄漏覆积,iPhone X 真機(jī)測試時內(nèi)存一直上到 500多M(若再進(jìn)出 RN 頁面,泄漏會更多)熟呛。找了下原因宽档,是因?yàn)樵a里沒釋放 RCTBridge bridge
對象。
處理如下:
注:如果在退出頁面前執(zhí)行self.bridge.invalidate()
庵朝,會出現(xiàn)閃白屏的問題吗冤,所以下面兩種方法都是在完全退出 RN 頁面時才執(zhí)行self.bridge.invalidate()
方法又厉。
1,如果 RN 頁面是以 dismissViewController 的方式退出:
self.dismiss(animated: true, completion: {
self.bridge.invalidate()
self.bridge = nil
})
2,如果 RN 頁面是在導(dǎo)航棧里 popViewController 方式退出的,則可以使用下面方法處理:
CATransaction.begin()
CATransaction.setCompletionBlock {
self.bridge.invalidate()
self.bridge = nil
}
CATransaction.commit()