gpt4 book ai didi

iphone - NSMutableArray 直接分配时的内存管理

转载 作者:行者123 更新时间:2023-12-03 20:25:37 24 4
gpt4 key购买 nike

我知道当我们将一个对象 obj 添加到 NSMutableArray 中时,它会获取该对象的 co_ownership 。因此,我们可以在将对象 obj 添加到 NSMutableArray 后释放该对象。而当我们释放NSMutableArray的时候,它也会调用其中所有对象的释放。所以不存在内存泄漏,一切都很好。

我的疑问是是否喜欢

NSMutableArray myArray = [[NMutableArray alloc] init];
[myArray addObject:[MyClass alloc] init]];
[myArray release];

这会导致我们的程序出现内存泄漏吗?

最佳答案

是的,确实会导致内存泄漏。

违规行是(为了清楚起见,我将其分开):

[myArray addObject:
[[MyClass alloc] init] // <- An instance is allocated with ownership
]; // <- The array retains the instance

最后,the retain/release ownership are not balanced并导致泄漏。

一种解决方案是在添加之前进行分配:

MyClass *obj = [MyClass alloc] init];
[[myArray addObject:obj];
[obj release];

关于iphone - NSMutableArray 直接分配时的内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8006127/

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