这个简单的 NSMutableArray Example 会使用 ARC 泄漏内存吗?

Will this simple NSMutableArray Example leak Memory using ARC?

我决定最近需要回顾一些基础知识,主要是与内存管理有关,我开始怀疑了。

我问的原因是因为我对如何使用临时变量在数组中存储安全进程项有些困惑。

有人能告诉我这个简单的代码是否会泄漏内存吗?

self.array=[NSMutableArray new];
// Retain +1
Test  *obj0 = [[Test alloc] init];
// Retain +1
[self.array addObject:obj0];
Test  *obj1 = nil;
//Retain +1
obj1=self.array[0];// does need to be __weak even though it has no owner?

[self.array removeAllObjects];

// is not null
NSLog(@"A: %@", obj1);

当您将 obj0 添加到数组时,其保留计数将增加,请参见例如here。然后就是+2.
当您将它分配给 obj1 时,它仍然具有 +2.
的保留计数 当您从数组中删除所有对象时,它们的保留计数将减少,因此 obj0 再次具有 +1.
的保留计数 这样就不会漏了。