我决定最近需要回顾一些基础知识,主要是关于内存管理,我开始怀疑。
我问的原因是因为我对如何使用临时变量在数组中存储安全进程项感到困惑。
如果这个简单的代码会泄漏内存,请告诉我这个简单的代码是否有问题?
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);
答案 0 :(得分:0)
将obj0
添加到数组时,其保留计数将增加,例如, here。然后是+2
当您将其分配到obj1
时,它的保留计数仍为+2
从阵列中删除所有对象时,其保留计数将减少,因此obj0
再次计算+1
。
因此它不会泄漏。