Memory Management Programming Guide for Cocoa / Руководство по работе с памятью в среде Сocoa: Глава 2. Memory Management Rules / Правила управления памятью

Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

Этот документ суммирует правила управления памятью в Objcetive-C.

Squatch 07.02.10 в 12:42

0

Вот основная идея:

Squatch 07.02.10 в 12:42

0

Вы становитесь владельцем объекта, если создаете его используя методы, имена которых начинаются с "alloc" или "new" или содержут "copy" (например, alloc, newObject, mutableCopy), или, если вы посылаете ему retain-сообщение. После этого на вас ложится ответственность за то, чтобы отказаться от объекта, которым вы владеете. Для этого необходимо послать объекту release или autorelease сообщение. Во всех остальных случаях, когда вы получаете объект, вам не нужно освобождаться от него подобным образом.
Следующие правила вытекают из этой основной идеи или так или иначе граничат с ней:

Squatch 07.02.10 в 13:00

0

autorelease означает "послать release-сообщение позднее" (чтобы понять, когда это "позднее" наступит, смотрите главу 5 "Autorelease Pools / Autorelease Пулы"). Причины, которые стоят за этим правилом обсуждаются в главе 3 "Object Ownership and Disposal / Владение и размещение объектов".

Squatch 07.02.10 в 13:06

0

Важно: правила управления памятью в 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];

Squatch 07.02.10 в 13:16

0
Минутку...