Catégories Objective-C

Les catégories permettent d'ajouter des fonctionnalités à un objet sans sous-classer ni modifier l'objet réel. Un outil pratique, ils sont souvent utilisés pour ajouter des méthodes aux classes existantes, telles que NSString ou vos propres objets personnalisés.


Étape 1: Configurez votre projet

Lancez Xcode et cliquez sur Fichier> Nouveau> Projet. Choisissez une application iOS Single View dans la fenêtre et cliquez sur "Suivant". Nommez votre produit "Catégories" et entrez un nom pour votre identifiant d'entreprise, tel que "com.companyName.categories". Choisissez la famille de périphériques iPhone et cliquez sur "Suivant". Choisissez un emplacement pour stocker votre projet et cliquez sur "Créer".


Étape 2: Créer la catégorie

Maintenant que votre projet est configuré, créons une catégorie qui ajoute des fonctionnalités supplémentaires au NSString classe. Cliquez sur Fichier> Nouveau> Fichier et choisissez une catégorie Cocoa Touch Objective-C dans la fenêtre. Cliquez sur Suivant." Nommez votre catégorie "RemoveNums" et sélectionnez NSString dans le menu déroulant "Catégorie sur" (vous devrez peut-être taper ceci manuellement). Cliquez sur "Suivant" suivi de "Créer".

Déclarer la méthode de la catégorie

De retour dans votre projet Xcode, cliquez sur "NSString + RemoveNums.h" pour afficher le fichier d'en-tête de la nouvelle catégorie. Ajoutez le code suivant à l'interface pour déclarer la méthode.

 @interface NSString (RemoveNums) - (NSString *) removeNumbersFromString: (NSString *) string; @fin

Implémenter la méthode par catégorie

Cliquez sur "NSString + RemoveNums.m" pour afficher le fichier d'implémentation de la catégorie. Ajoutez le code suivant pour créer une méthode qui supprimera tous les nombres d’une NSString. Nous définissons d'abord un NSCharacterSet des nombres de zéro à neuf que nous utiliserons comme référence pour comparer avec la chaîne d’entrée originale. Dans ce cas, la chaîne d'origine "ABC 123" aura les numéros "123" supprimés de la chaîne car la méthode category utilise la NSString méthode stringByTrimmingCharactersInSet:.

 - (NSString *) removeNumbersFromString: (NSString *) string NSString * trimmedString = nil; NSCharacterSet * numbersSet = [NSCharacterSet characterSetWithCharactersInString: @ "0123456789"]; trimmedString = [string stringByTrimmingCharactersInSet: numbersSet]; return trimmedString; 

Étape 3: Importer la catégorie

Cliquez sur "ViewController.h" et importez la catégorie en ajoutant le code suivant..

 #import "NSString + RemoveNums.h"

Étape 4: Testez la catégorie

Cliquez sur "ViewController.m" et ajoutez le code suivant à la viewDidLoad méthode. La variable locale stringWithNums contient une combinaison de lettres et de chiffres. La ligne suivante prend la variable chaîne et l'exécute à travers la méthode category removeNumbersFromString. finalement, NSLog renvoie la valeur retournée de la chaîne nouvellement coupée sans aucun chiffre.

 NSString * stringWithNums = @ "ABC 123"; NSLog (@ "stringWithNums ->% @", stringWithNums); stringWithNums = [stringWithNums removeNumbersFromString: stringWithNums]; NSLog (@ "trimmed stringWithNums ->% @", stringWithNums);

Étape 5: Utilisez la méthode de la catégorie

Cliquez sur Produit> Exécuter, ou cliquez sur la flèche "Exécuter" située dans le coin supérieur gauche pour tester le code. Remarquez que la console affiche la chaîne de saisie d'origine, "ABC 123", ainsi que la chaîne après qu'elle ait été modifiée par la méthode category et que les numéros ont été supprimés..

Conclusion

Le sous-classement est un moyen d'ajouter des fonctionnalités à un objet, mais éviter les sous-classements inutiles en utilisant une catégorie contribuera à réduire la quantité de code et à mieux organiser vos projets. Il existe un certain nombre de scénarios dans lesquels l’utilisation d’une catégorie est bénéfique. Partagez vos scénarios de catégorie dans les commentaires ci-dessous.