2009-04-02 2 views

ответ

7

Быстрые объяснения: Все, что вам Alloc, новый, сохранить или скопировать вы также должны релиза. Кроме того, все, что вы НЕ РАСПРОСТРАНЯЕТЕ или не копируете, должно сохраняться, если вы планируете удерживать его за пределами текущего цикла сообщений (или вы рискуете, что он будет автореализован и станет недопустимой ссылкой).

+0

... и rememeber что-нибудь начиная с инициализации ... следует этим правилам. initWithImage initWithoutClosingTheFridgeDoor и т. д. Вы также должны следовать этим правилам при реализации классов. init ... сообщения должны возвращать объект со счетом сохранения одного и так далее. –

+1

Это не совсем правильно. Из документации Apple http://developer.apple.com/mac/library/documentation/cocoa/conceptual/MemoryMgmt/Articles/mmRules.html # // apple_ref/doc/uid/20000994-BAJHFBGH: ** Вы приобретаете собственность на объект, если его создаете с использованием метода, имя которого начинается с «alloc» или «new» или содержит «copy» (например, alloc , newObject или mutableCopy), или если вы отправите ему сообщение сохранения. ** – Florin

+0

Эрик, я думаю, вы имеете в виду * alloc *, * retain * или * copy *. :) – h4xxr

2

CocoaDev всегда имеет довольно хорошие ресурсы, и их введение в управление памятью не является исключением.

1

Конечно, есть много свободных ресурсов для изучения управления памятью, но если вы действительно новичок в этой теме и предпочтете визуальный подход, Стив Скотт (парень, который управляет сетью разработчиков Mac) имеет отличную , суп-орехи набор учебных видеороликов, которые вы можете скачать по USD 10: http://www.mac-developer-network.com/videotraining/beginner/vid001/. Это в основном лекция, которая выходит за рамки «использования релиза и авторекламы» и рассказывает о том, как ОС управляет памятью. Очень полезно, если вы пропустили этот материал в Comp. Sci. 101.

FWIW, я использовал набор из трех условий «Если», которые были полезны, когда я начинал (например, «Если я выделяю или копирую и создаю объект, тогда ...»). Мне было легче запомнить эти три условия сначала, чем полный набор правил. Я написал короткий учебник, который использует эти «мозговые триггеры», чтобы объяснить правила, если это полезно кому-либо еще. http://www.clintharris.net/2009/three-brain-triggers-for-objc-memory-mgmt/

0

Для меня Apple's Memory Management Programming Guide работало достаточно хорошо.

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

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