0

Я решил, что мне нужно вернуться к некоторым основам в последнее время, в основном для управления памятью, и я начинаю сомневаться.Будет ли этот простой пример NSMutableArray утечки памяти с помощью 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); 
+0

Нет, это не утечка памяти. – trojanfoe

+0

Используйте инструменты, чтобы увидеть, есть ли утечки или удержание циклов. – rmaddy

ответ

0

При добавлении obj0 в массив, его сохранить счетчик будет увеличиваться, смотри, например, here. Затем +2.
Когда вы назначаете его obj1, он по-прежнему сохраняет количество +2.
Когда вы удаляете все объекты из массива, их количество удержания будет уменьшаться, поэтому obj0 имеет еще один счетчик +1.
Это, таким образом, не будет течь.

Смежные вопросы