Готовый перевод Memory Management Programming Guide for Cocoa / Руководство по работе с памятью в среде Сocoa: Глава 2. Memory Management Rules / Правила управления памятью
Этот документ суммирует правила управления памятью в Objcetive-C.
Вот основная идея:
Вы становитесь владельцем объекта, если создаете его используя методы, имена которых начинаются с "alloc" или "new" или содержут "copy" (например, alloc, newObject, mutableCopy), или, если вы посылаете ему retain-сообщение. После этого на вас ложится ответственность за то, чтобы отказаться от объекта, которым вы владеете. Для этого необходимо послать объекту release или autorelease сообщение. Во всех остальных случаях, когда вы получаете объект, вам не нужно освобождаться от него подобным образом.
Следующие правила вытекают из этой основной идеи или так или иначе граничат с ней:
autorelease означает "послать release-сообщение позднее" (чтобы понять, когда это "позднее" наступит, смотрите главу 5 "Autorelease Pools / Autorelease Пулы"). Причины, которые стоят за этим правилом обсуждаются в главе 3 "Object Ownership and Disposal / Владение и размещение объектов".
Важно: правила управления памятью в Core Foundation довольно похожи на эти (смотрите документ "Memory Management Programming Guide for Core Foundation"). Но правила именования объектов в Сocoa и Core Foundation так или иначе отличаются. В частности правила создания объектов, описанные в "Memory Management Programming Guide for Core Foundation" не соответствуют методам, возвращающим объекты Objective-C. Например, в следующем фрагменте кода вы не несете ответственности за отказ от владения объектом, на который ссылается myInstance:
MyClass *myInstance = [MyClass createInstance];
Переведено на Нотабеноиде
http://notabenoid.org/book/6601/19888
Переводчики: Squatch
Настройки
Готово:
