2016-11-17 15 views
-2

Я пишу простое приложение Obj-c. До сих пор у меня никогда не было до alloc ничего, и я отдал должное, что ARC позаботится об управлении памятью.Должен ли я dealloc NSImage?

Но теперь я должен позвонить:

NSImage *myImage = [[NSImage alloc] initByReferencingFile: pathToMyImg]; 

После я сделал с myImage я должен вручную dealloc это?

+1

Если вы используете ARC, то он автоматически будет освобождаться, когда вы не используете его больше – Alex

ответ

1

Если вы используете ARC Objective-C (который по умолчанию, и вы сказали, что все равно), нет никакой разницы в требуемом управлении памятью между созданием экземпляра factory method и созданием экземпляра стиля [[NSImage alloc] init]. Все, что вы создадите, будет автоматически выпущено, когда последняя сильная ссылка выходит за рамки (или объект, содержащий последнюю сильную ссылку ссылки, выходит за рамки).

Если вы не использовали ARC, вам придется вручную выполнить [myImage release], когда вы закончите с этим, но нет причин не быть, если вы не пишете код для более старого проекта.

0

После того как я закончил с myImage должен ли я вручную dealloc?

Вопрос не имеет никакого смысла. Вы используете ARC. Предположим, что ответ был «Да». Как бы вы это сделали? Ты не можешь. ARC не позволит вам давать какие-либо команды управления памятью NSObject.

Поэтому ответ должен быть №