Memory Management Programming Guide for Cocoa / Руководство по работе с памятью в среде Сocoa

→– (NSArray *)sprockets
0 – (NSArray *)sprockets
→Thingamajig *myThingamajig = [[Thingamajig alloc] init];
// ...
NSArray *sprockets = [myThingamajig sprockets];
// ...
[myThingamajig release];
0 Thingamajig *myThingamajig = [[Thingamajig alloc] init];
// ...
NSArray *sprockets = [myThingamajig sprockets];
// ...
[myThingamajig release];
→Important: There are similar memory management rules for Core Foundation objects (see Memory Management Programming Guide for Core Foundation). The naming conventions for Cocoa and Core Foundation, however, are different. In particular, Core Foundation’s “create rule in Memory Management Programming Guide for Core Foundation” does not apply to methods that return Objective-C objects. For example, in the following code fragment, you are not responsible for relinquishing ownership of myInstance:
MyClass *myInstance = [MyClass createInstance];
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];
→autorelease just means “send a release message later” (for some definition of later—see “Autorelease Pools”).
The reasoning behind these rules is discussed in “Object Ownership and Disposal.”
0 autorelease означает "послать release-сообщение позднее" (чтобы понять, когда это "позднее" наступит, смотрите главу 5 "Autorelease Pools / Autorelease Пулы"). Причины, которые стоят за этим правилом обсуждаются в главе 3 "Object Ownership and Disposal / Владение и размещение объектов".
→You take ownership of an object if you create it using a method whose name begins with “alloc” or “new” or contains “copy” (for example, alloc, newObject, or mutableCopy), or if you send it a retain message. You are responsible for relinquishing ownership of objects you own using release or autorelease. Any other time you receive an object, you must not release it.
The following rules derive from the fundamental rule, or cope with edge cases:
0 Вы становитесь владельцем объекта, если создаете его используя методы, имена которых начинаются с "alloc" или "new" или содержут "copy" (например, alloc, newObject, mutableCopy), или, если вы посылаете ему retain-сообщение. После этого на вас ложится ответственность за то, чтобы отказаться от объекта, которым вы владеете. Для этого необходимо послать объекту release или autorelease сообщение. Во всех остальных случаях, когда вы получаете объект, вам не нужно освобождаться от него подобным образом.
Следующие правила вытекают из этой основной идеи или так или иначе граничат с ней:
→To fully understand how the object ownership policy is implemented in Cocoa, you must also read “Autorelease Pools.”
0 Для полного понимания того, что из себя представляет политика владения объектами в Cocoa, вам также следует прочитать главу 6 - "Autorelease Pools / Autorelease Пулы".
→This document discusses the policy for ownership of Objective-C objects and how and when to dispose of objects.
0 В этом документе обсуждается политика владения объектами в Objective-C и вопросы о том как и когда следует разрушать объекты.
→This is the fundamental rule:
0 Вот основная идея:
→This document summarizes the rules for memory management in Objective-C.
0 Этот документ суммирует правила управления памятью в Objcetive-C.
→* “Implementing Object Copy” (page 35) discusses issues related to object copying, such as deciding whether to implement a deep or shallow copy and approaches for implementing object copy in your subclasses.
0 * "Implementing Object Copy / Механизм копирования объектов" (глава 7) - обсуждаются проблемы связанные с копированием объектов, например принятие решения о том исполнять "глубокое" или "поверхностное" копирование, а также подходы к копированию объектов в ваших подклассах.
→* “Accessor Methods” (page 31) describes how to implement accessor methods.
0 * "Accessor Methods / Accessor Методы" (глава 6) - описывает принцип работы accessor методов.
→* “Memory Management of Core Foundation Objects in Cocoa” (page 41) gives guidelines and techniques for memory management of Core Foundation objects in Cocoa code.
0 * "Memory Management of Core Foundation Objects in Cocoa / Управление памятью объектов Сore Foundation в среде Cocoa" (глава 8) - дает инструкции и техники по управлению памятью объектов Сore Foundation в среде Cocoa.
→* “Memory Management of Nib Objects” (page 43) discusses memory management issues related to nib files.
0 * "Memory Management of Nib Objects / Управление памятью Nib объектов" (глава 9) - обсуждаются проблемы управления памятью, связанные с nib-файлами.
→* “Autorelease Pools” (page 25) describes the use of autorelease pools—a mechanism for deferred deallocation—in Cocoa programs.
0 * "Autorelease Pool / Autorelease Пул" (глава 5) - описывает использование autorelease пулов - механизма, в котором освобождение памяти от объектов откладывается на некоторое время (т.е. мы не контролируем этот процесс).
→* “Practical Memory Management” (page 19) gives a practical perspective on memory management.
0 * "Practical Memory Management / Управление памятью на практике" (глава 4) - дает практические советы по управлению памятью.
→* “Object Ownership and Disposal” (page 11) describes the primary object-ownership policy.
0 * "Object Ownership and Disposal / Владение и размещение объектов" (глава 3) - описывает основные положения политики владения объектами.
→* “Memory Management Rules” (page 9) summarizes the rules for object ownership and disposal.
0 * "Memory Management Rules / Правила управления памятью" (глава 2) - общие правила размещения и владения объектами.
→This document contains the following articles:
0 Данный документ состоит из следующих разделов:
→This document does not describe details of allocating and initializing objects, and implementing initializer methods. These tasks are discussed in Allocating and Initializing Objects in TheObjective-CProgramming Language.
0 В этом документе не описываются детали размещения в памяти и инициализации объектов, а также методы реализующие это. Эти задачи обсуждаются в разделе "Allocating and Initializing Objects" документа "The Objective-C Programming Language".
→Note: If you are starting a new project targeted at Mac OS X v10.5 and later, you should typically use garbage collection unless you have good reason to use the techniques described here.
0 Примечание: если вы создаете новый проект для Mac OS X версии 10.5 или выше, вероятнее всего вам лучше использовать Сборщик Мусора до тех пор пока не появится веской причины, чтобы применить одну из описанных сдесь техник.
Резюме
Пол:
мужчина
Родной язык:
русский
С нами:
с 7 февраля 2009 г. (6463 дня) по приглашению notabenoid
Деятельность:
838 версий перевода с общим рейтингом −2
2 комментария
Карма: 2 (оценок: 2)
Написать Squatch личное сообщение