Objectief-C-categorieën

Categorieën bieden de mogelijkheid om functionaliteit aan een object toe te voegen zonder het werkelijke object te subclasseren of te wijzigen. Een handig hulpmiddel, ze worden vaak gebruikt om methoden toe te voegen aan bestaande klassen, zoals NSString of uw eigen aangepaste objecten.


Stap 1: Stel uw project in

Start Xcode en klik op Bestand> Nieuw> Project. Kies een iOS Single View-toepassing uit het venster en klik op "Volgende". Geef uw product 'Categorieën' een naam en voer een naam in voor uw bedrijfsidentificatie, zoals 'com.companyName.categories'. Kies de iPhone-apparaatfamilie en klik op "Volgende". Kies een locatie om uw project op te slaan en klik op 'Maken'.


Stap 2: Maak de categorie

Nu uw project is ingesteld, kunnen we een categorie maken die extra functionaliteit toevoegt aan de NSString klasse. Klik op Bestand> Nieuw> Bestand en kies een Cocoa Touch Objective-C categorie uit het venster. Klik volgende." Geef uw categorie de naam "RemoveNums" en selecteer NSString uit het vervolgkeuzemenu "Categorie aan" (u moet dit mogelijk handmatig invoeren). Klik op "Volgende" gevolgd door "Maken".

Verklaar de categoriemethode

Terug in uw Xcode-project, klik op "NSString + RemoveNums.h" om het header-bestand van de nieuwe categorie te bekijken. Voeg de volgende code toe aan de interface om de methode te declareren.

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

Implementeer de categoriemethode

Klik op "NSString + RemoveNums.m" om het implementatiebestand van de categorie te bekijken. Voeg de volgende code toe om een ​​methode te maken waarmee alle nummers uit een worden verwijderd NSString. Eerst definiëren we een NSCharacterSet van de cijfers nul tot en met negen die we zullen gebruiken als een referentie om te vergelijken met de originele invoerreeks. In dit geval heeft de oorspronkelijke tekenreeks "ABC 123" de getallen "123" verwijderd uit de tekenreeks omdat de categoriemethode de NSString methode stringByTrimmingCharactersInSet:.

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

Stap 3: importeer de categorie

Klik op "ViewController.h" en importeer de categorie door de volgende code toe te voegen.

 #import "NSString + RemoveNums.h"

Stap 4: Test de Categorie

Klik op "ViewController.m" en voeg de volgende code toe aan de viewDidLoad methode. De lokale variabele stringWithNums bevat een combinatie van letters en cijfers. De volgende regel neemt de stringvariabele en voert deze door de categoriemethode removeNumbersFromString. Tenslotte, NSLog geeft de geretourneerde waarde van de nieuw getrimde reeks zonder enig nummer af.

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

Stap 5: gebruik de categoriemethode

Klik op Product> Uitvoeren of klik op de pijl "Uitvoeren" in de linkerbovenhoek om de code te testen. Merk op dat de console de originele invoerreeks toont, "ABC 123", evenals de string nadat deze is gewijzigd door de categoriemethode en de getallen zijn verwijderd.

Conclusie

Subclassering is een manier om functionaliteit aan een object toe te voegen, maar door onnodige subclassering te voorkomen door een categorie te gebruiken, wordt de hoeveelheid code verminderd en blijven uw projecten overzichtelijker. Er zijn een aantal scenario's waarbij het nuttig is een categorie te gebruiken. Deel uw categoriescenario's in de onderstaande opmerkingen.