Objective-C : réifier les classes natives avec les Catégories

Les Catégories en Objective-C : “Ça ressemble à de l’Objet, c’est encapsulé comme l’Objet… mais ce n’est pas de l’Objet”

Je suis en train de travailler sur une application iPad qui doit reprendre une partie du code source d’une précédente version de l’application.

Une des fonctionnalités que j’ai réutilisée est le blog. Il repose sur la digestion en lecture seule d’un flux JSON. Ce flux JSON, via l’API native iOS, retourne un NSDictionary (une hash map) par item, ou plus exactement un tableau (NSArray) d’items (NSDictionary).

Afin de limiter les modifications dans les sources que j’ai importées de la version antérieure, je me suis demandé si je ne pouvais pas utiliser directement les classes natives (NSArray et NSDictionary) au lieu de créer des classes dédiées (Blog et Post).
Et cela s’est finalement bien passé, et donne une solution plutôt séduisante grâce à un idiome du langage Objective-C : les Catégories.

Voir à la fin pour les sources du projet d’exemple.

En Ruby, on parle aussi de ré-ouverture de classe.

Etant donné que, contrairement au C++, Objective-C ne supporte pas l’héritage multiple, les catégories, avec les protocoles, sont un bon moyen d’étendre une classe.

Lire la suite