Должен ли я иметь дело с NSImage?

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

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

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

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

2 ответа

Решение

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

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

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

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

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

Другие вопросы по тегам