[UPDATE] MRC section

This commit is contained in:
Yannick 2014-01-20 22:42:23 +01:00
parent 42a5b7d305
commit a35126f22e

View File

@ -452,32 +452,32 @@ distance = 18;
/////////////////////////////////////// ///////////////////////////////////////
// Memory Management // Gestion de la mémoire
/////////////////////////////////////// ///////////////////////////////////////
/* /*
For each object used in an application, memory must be allocated for that object. When the application Pour chaque objet utilisé dans une application, la mémoire doit être alloué pour chacun d'entre eux.
is done using that object, memory must be deallocated to ensure application efficiency. Quand l'application en a fini avec cet objet, la mémoire doit être libéré pour assurer la performane.
Objective-C does not use garbage collection and instead uses reference counting. As long as Il n'y a pas de ramasse-miettes en Objective-C, il utilise à la place le comptage de référence à la
there is at least one reference to an object (also called "owning" an object), then the object place. Tant que le compteur de référence est supérieur à 1 sur un objet, l'objet ne sera pas supprimé.
will be available to use (known as "ownership").
When an instance owns an object, its reference counter is increments by one. When the Quand une instance détient un objet, le compteur de référence est incrémenté de un. Quand l'objet est
object is released, the reference counter decrements by one. When reference count is zero, libéré, le compteur est décrémenté de un. Quand le compteur est égale à zéro, l'objet est supprimé de
the object is removed from memory. la mémoire.
With all object interactions, follow the pattern of: Une bonne pratique à suivre quand on travaille avec des objets est la suivante :
(1) create the object, (2) use the object, (3) then free the object from memory. (1) créer un objet, (2) utiliser l'objet, (3) supprimer l'objet de la mémoire.
*/ */
MyClass *classVar = [MyClass alloc]; // 'alloc' sets classVar's reference count to one. Returns pointer to object. MaClasse *classeVar = [MyClass alloc]; // 'alloc' incrémente le compteur de référence
[classVar release]; // Decrements classVar's reference count. [classeVar release]; // Décrémente le compteur de rérence
// 'retain' claims ownership of existing object instance and increments reference count. Returns pointer to object. // 'retain' incrémente le compteur de référence
MyClass *newVar = [classVar retain]; // If classVar is released, object is still in memory because newVar is owner. // Si 'classeVar' est libéré, l'objet reste en mémoire car le compteur de référence est non nulle
[classVar autorelease]; // Removes ownership of object at end of @autoreleasepool block. Returns pointer to object. MaClasse *nouvelleVar = [classVar retain];
[classeVar autorelease]; // Supprime l'appartenance de l'objet à la fin du block
// @property can use 'retain' and 'assign' as well for small convenient definitions. // @property peuvent utiliser 'retain' et 'assign'
@property (retain) MyClass *instance; // Release old value and retain a new one (strong reference). @property (retain) MaClasse *instance; // Libère l'ancienne valeur et retient la nouvelle
@property (assign) NSSet *set; // Pointer to new value without retaining/releasing old (weak reference). @property (assign) NSSet *set; // Pointeur vers la valeur sans retenir/libérer l'ancienne valeur
// Automatic Reference Counting (ARC) // Automatic Reference Counting (ARC)
// Because memory management can be a pain, Xcode 4.2 and iOS 4 introduced Automatic Reference Counting (ARC). // Because memory management can be a pain, Xcode 4.2 and iOS 4 introduced Automatic Reference Counting (ARC).
@ -499,7 +499,7 @@ __weak NSSet *weakSet; // Weak reference to existing object. When existing objec
__unsafe_unretained NSArray *unsafeArray; // Like __weak, but unsafeArray not set to nil when existing object is released. __unsafe_unretained NSArray *unsafeArray; // Like __weak, but unsafeArray not set to nil when existing object is released.
``` ```
## Further Reading ## Lectures Complémentaires
[La Page Wikipedia de l'Objective-C](http://fr.wikipedia.org/wiki/Objective-C) [La Page Wikipedia de l'Objective-C](http://fr.wikipedia.org/wiki/Objective-C)