Objective-C : les fondamentaux pour le développement iOS 6 Objective-C : initialisation d'une instance d'objet

Pour obtenir l'instance d'un objet, il faut allouer la mémoire pour l'objet, puis l'initialiser à l'aide d'un initialisateur.

On peut comparer l'initialisateur à un constructeur (cette notion existe en Java, C++ et PHP) qui ne prendrait pas en charge l'allocation de la mémoire.

L'allocation d'un nouvel objet se fait à l'aide de la méthode de classe alloc.

 MaClasse *instanceNonInitialisee = [MaClasse alloc];


L'allocation est l'équivalent d'un malloc(), il faut toujours initialiser la structure de données en appelant un initialisateur avant d'utiliser l'objet.

Chaque classe définit ses initialisateurs. Par défaut, on appelle la méthode init qui est fournie par NSObject.

 MaClasse *instance = [[MaClasse alloc] init];

Pour implémenter un nouvel initialisateur, déclarez une méthode d'instance dont le type de retour est id. Elle devra toujours respecter le format suivant :
- (id) initAvecUnParametre:(id) anObject
{
if (self = [super init])
{
// Initialisation ici
}
return self;
}

Ce format garantit que l'initialisateur parent est toujours appelé et qu'il peut éventuellement empêcher l'initialisation en renvoyant nil ou renvoyer une instance déjà existante (pour un singleton par exemple).