2

Я разрабатываю приложение iOS с использованием последних SDK и ARC.Выпуск NSMutableArray при использовании ARC

У меня есть эта переменная:

NSMutableArray* _previewImageBuffer; 

И этот метод:

- (void)shutdown 
{ 
    [self stop]; 
    _previewImageBuffer = nil; 
} 

Является _previewImageBuffer = nil; правильно? Если я это сделаю, что происходит с памятью, выделенной в _previewImageBuffer`? Это утечка памяти?

Я хочу освободить этот объект, потому что мне нужно освободить используемую им память.

+0

Ответили здесь, может быть? http://stackoverflow.com/a/9621587/155513 Вы не одиноки, хотя, управляя управлением памятью вручную в течение стольких лет, глядя на код ARC, иногда бывает непонятно: p – Shizam

+1

ответ, который вы указали, запутан и не применим здесь –

+0

Незначительные детали: установка этого указателя на нуль не освобождает указатель, это приводит к тому, что OBJECT указывает, что указатель адресован POSSIBLY, освобождается - если другие сильные указатели не обращаются к нему. Указатель '_previewImageBuffer' сам принадлежит к этому« объекту »и будет связан с удалением этого объекта. –

ответ

5

Что вы делаете, это точно. Nilifying переменная экземпляра объекта под ARC освобождает объект. Освобождение NSArray, если он вызывает освобождение NSArray, также освобождает все его элементы.

Если вы сомневаетесь или смущены управлением памятью и ARC, вы можете преуспеть, чтобы остановиться и прочитать факты, пока вы больше не сомневаетесь или не смутитесь. Моя книга имеет, возможно, полезное объяснение:

http://www.apeth.com/iOSBook/ch12.html#_memory_management

1

Под ARC это не утечка. Память будет выпущена. При изучении ARC вы также должны посмотреть на разницу между ссылкой strong или weak.

Вы также должны посетить Apple's official introduction to ARC.

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