gpt4 book ai didi

iOS - 对 ARC 感到困惑并清除对象的 NSMutableArray

转载 作者:行者123 更新时间:2023-11-28 23:11:39 26 4
gpt4 key购买 nike

我有一个关于 ARC nad NSMutableArray 的问题。

情况是这样的:

我有一个带有 NSMUtableArray ( arr1 ) 的 ListView,其中包含 ListView 的所有元素。在 native 代码中运行的单独线程对 objective-c ListView 进行回调。 native 代码创建一个新的 NSMutableArray ( arr2 ),用我的自定义类的元素填充它(每个元素都有一个名称、ID、图标等),然后将它传递到 ListView。

在 ListView 中,首先我使用 [arr1 removeAllObjects] 清除数组,然后我添加来自 arr2 的每个元素至 arr1[arr1 addObject: ..] .

注意事项:

*所有代码,包括 native 和 Objective-C,都被编译为 Objective-C++ 代码。

*分配和初始化的 native 代码部分 arr2 (及其所有元素)和调用 ListView 的东西都在 @autoreleasepool 下指令

我的问题;

  1. native 代码是否存在任何内存泄漏?

  2. ListView 代码是否存在任何内存泄漏?我会用[arr1 removeAllObjects]发布旧元素吗?导致内存泄漏?

  3. @autoreleasepool 是否提供与 ARC 相同的功能,这意味着我不必显式释放对象?

最佳答案

1) 不应该有,但有时会有小泄漏(我见过一些带有钥匙串(keychain)的,还有一些音频库)。这不是你要处理的问题,而且在大多数情况下是无法解决的。

2) removeAllObjects 确实向数组中的所有对象发送释放。您可以通过在 dealloc 方法中放置一个断点来看到这一点。

3) 是的 ARC @autoreleasepool 工作相同

你上面描述的情况对我来说看起来很安全。

关于iOS - 对 ARC 感到困惑并清除对象的 NSMutableArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8081628/

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