Лучшая процедура управления памятью - PullRequest
1 голос
/ 06 июня 2011

Я пишу приложение для iPhone, и теперь пришло время начать очистку памяти.

Лучшим программистом, чем я, мне сказали, что каждый раз, когда я выполняю alloc, я должен освобождатьпамять в конце модуля.

Является ли это утверждение о том, что каждый раз, когда происходит выделение, что должно быть удаление в разделе dealloc файла .m ??

спасибо Тони

Ответы [ 2 ]

3 голосов
/ 06 июня 2011

Вместо того, чтобы просто слушать то, что сказал вам ваш коллега, прочитайте Руководство по управлению памятью .

Управление памятью - это не то, что вы делаете в конце, а «очистка» - это то, о чем вам нужно думать при программировании. Не просто полагаться на то, что кто-то говорит вам, это правило большого пальца. Прочитайте документы, поймите их, а затем используйте правила большого пальца, чтобы помочь вам вспомнить, какие они есть.

Например - Когда вы создаете локальную переменную в методе с alloc, вы не можете ждать, пока dealloc не наберет release ее, потому что к тому времени эта переменная вышла из области видимости, у вас нет объект для вызова release on 'и у вас есть утечка. Так что эмпирическое правило не годится.

1 голос
/ 06 июня 2011

Возможно, вы захотите ознакомиться с руководствами по управлению памятью на сайте разработчиков Apple. В основном вам нужно иметь release или autorelease для каждого new, copy, or alloc, который вы используете. Но в идеале релиз должен быть в функции, которая вызывает new, copy, or alloc, а не в вашей функции dealloc. dealloc следует использовать только для освобождения объектов, которые были сохранены в разделе @property вашего заголовочного файла.

...