Mål-C-kategorier

Kategorier gir muligheten til å legge til funksjonalitet til et objekt uten underklassering eller endring av det aktuelle objektet. Et praktisk verktøy, de brukes ofte til å legge til metoder til eksisterende klasser, for eksempel NSString eller dine egne egendefinerte objekter.


Trinn 1: Konfigurer prosjektet

Start Xcode og klikk på File> New> Project. Velg et iOS Single View-program fra vinduet og klikk på "Neste". Gi produktet navn "Kategorier" og skriv inn et navn for firmaidentifikatoren, for eksempel "com.companyName.categories." Velg iPhone-enheten, og klikk på "Neste". Velg et sted for å lagre prosjektet ditt og klikk "Opprett".


Trinn 2: Opprett kategori

Nå som prosjektet ditt er satt opp, la oss lage en kategori som legger til ekstra funksjonalitet til NSString klasse. Klikk på File> New> File, og velg en kakaobryt objektiv-C kategori fra vinduet. Klikk på "Neste". Navngi kategorien "RemoveNums" og velg NSString fra rullegardinmenyen "Kategori på" (du må kanskje skrive dette inn manuelt). Klikk på "Next" etterfulgt av "Create."

Erklære kategorimetoden

Tilbake i Xcode-prosjektet ditt, klikk på "NSString + RemoveNums.h" for å se den nye kategorien headerfilen. Legg til følgende kode i grensesnittet for å erklære metoden.

 @interface NSString (RemoveNums) - (NSString *) removeNumbersFromString: (NSString *) streng; @slutt

Gjennomfør kategorimetoden

Klikk "NSString + RemoveNums.m" for å se kategoriens implementasjonsfil. Legg til følgende kode for å lage en metode som fjerner alle tallene fra en NSString. Først definerer vi en NSCharacterSet av tallene null til ni som vi skal bruke som referanse til å sammenligne med den opprinnelige innspillstrengen. I dette tilfellet vil den opprinnelige strengen "ABC 123" få tallene "123" fjernet fra strengen fordi kategorimetoden bruker NSString metode stringByTrimmingCharactersInSet:.

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

Trinn 3: Importer kategorien

Klikk "ViewController.h" og importer kategorien ved å legge til følgende kode.

 #import "NSString + RemoveNums.h"

Trinn 4: Teste kategorien

Klikk "ViewController.m" og legg til følgende kode i viewDidLoad metode. Den lokale variabelen stringWithNums inneholder en kombinasjon av bokstaver og tall. Neste linje tar strengvariabelen og kjører den gjennom kategorimetoden removeNumbersFromString. Endelig, NSLog sender ut den returnerte verdien av den nylig beskrevne strengen uten noen tall.

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

Trinn 5: Bruk kategorimetoden

Klikk på Produkt> Kjør, eller klikk pilen "Kjør" øverst til venstre for å teste koden. Legg merke til at konsollen viser den opprinnelige inntastingsstrengen, "ABC 123", så vel som strengen etter at den har blitt endret etter kategorimetoden og tallene er fjernet.

Konklusjon

Subclassing er en måte å legge til funksjonalitet til et objekt, men unngår unødvendig underklasse med en kategori vil bidra til å redusere mengden kode og holde prosjektene mer organisert. Det er en rekke scenarier hvor bruk av en kategori er gunstig. Del dine kategoriscenarier i kommentarene nedenfor.