我知道当我们将一个对象 obj 添加到NSMutableArray中时,它会获取该对象的co_ownership。因此,我们可以在将对象添加到NSMutableArray之后立即释放对象 obj 。当我们发布NSMutableArray时,它还会调用其中所有对象的释放。所以没有内存泄漏,一切都很好。
我怀疑是否喜欢
NSMutableArray myArray = [[NMutableArray alloc] init];
[myArray addObject:[MyClass alloc] init]];
[myArray release];
这会导致我们程序中的任何内存泄漏吗?
答案 0 :(得分:4)
确实如此,它会导致内存泄漏。
违规行是(我为了清楚起见将其分开):
[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];
答案 1 :(得分:3)
为autorelease
添加MyClass
。这应该可以解决任何内存泄漏问题
NSMutableArray myArray = [[NMutableArray alloc] init];
[myArray addObject:[[[MyClass alloc] init] autorelease];
[myArray release];