gpt4 book ai didi

iOS + React Native - 内存泄漏

转载 作者:行者123 更新时间:2023-11-29 05:42:50 26 4
gpt4 key购买 nike

我正在考虑在 React Native 中制作一个 iOS 项目。在 iOS 上,查找并修复所谓的“保留周期”是一个大问题,即当两个对象存储彼此的引用时:

class Obj1 {
var delegate: Obj2?
}

class Obj2 {
var delegate: Obj1?
}


let obj1 = Obj1()
let obj2 = Obj2()

obj1.delegate = obj2
obj2.delegate = obj1

React Native 有内存泄漏或保留周期的概念吗? JS 对应部分中的类似代码会在 React Native 环境中创建保留循环吗?

传递一个捕获self的闭包怎么样?这也会在 React Native 中造成内存泄漏吗?

总结:

  1. 列出的示例代码(重写为 JS)会导致 RN 内存泄漏吗?
  2. 在闭包中捕获 self 会导致内存泄漏吗?

最佳答案

您实际上不应该让两个对象保留彼此的强引用,委托(delegate)模式通常通过一强一弱引用来处理,其中委托(delegate)是弱引用。

现在回答你的问题:

  1. 可能,但其他人可能会给您更好的答案,因为我对 RN 并不完全确定。

  2. 是或否,取决于您如何处理。

如果使用strong self,那么肯定会出现内存泄漏:

{ _ in
self.doSomething()
}

更好的方法是使用弱 self :

{ [weak self] _ in
guard let self = self else { return }
self.doSomething()
}

或者无主的 self,如果你能保证 self 在闭包中始终可用:

{ [unowned self] _ in
self.doSomething()
}

关于iOS + React Native - 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56395740/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com