Categorie Objective-C

Le categorie offrono la possibilità di aggiungere funzionalità a un oggetto senza creare sottoclassi o modificare l'oggetto reale. Uno strumento utile, sono spesso utilizzati per aggiungere metodi a classi esistenti, come ad esempio NSString o i tuoi oggetti personalizzati.


Passaggio 1: imposta il tuo progetto

Avvia Xcode e fai clic su File> Nuovo> Progetto. Scegli un'applicazione iOS con vista singola dalla finestra e fai clic su "Avanti". Assegna un nome al prodotto "Categorie" e inserisci un nome per l'identificatore della tua azienda, ad esempio "com.companyName.categories". Scegli la famiglia di dispositivi iPhone e fai clic su "Avanti". Scegli una posizione per archiviare il tuo progetto e fai clic su "Crea".


Passaggio 2: creare la categoria

Ora che il tuo progetto è impostato, creiamo una categoria che aggiunge funzionalità aggiuntive a NSString classe. Fai clic su File> Nuovo> File e scegli una categoria Cocoa Touch Objective-C dalla finestra. Fai clic su "Avanti". Assegna un nome alla categoria "RemoveNums" e seleziona NSString dal menu a discesa "Categoria su" (potrebbe essere necessario inserirlo manualmente). Fai clic su "Avanti" seguito da "Crea".

Dichiarare il metodo di categoria

Tornando al progetto Xcode, fai clic su "NSString + RemoveNums.h" per visualizzare il file di intestazione della nuova categoria. Aggiungere il seguente codice all'interfaccia per dichiarare il metodo.

 @interface NSString (RemoveNums) - (NSString *) removeNumbersFromString: (NSString *) stringa; @fine

Implementare il metodo di categoria

Fai clic su "NSString + RemoveNums.m" per visualizzare il file di implementazione della categoria. Aggiungere il seguente codice per creare un metodo che rimuoverà tutti i numeri da un NSString. Per prima cosa definiamo un NSCharacterSet dei numeri da zero a nove che useremo come riferimento per confrontarci con la stringa di input originale. In questo caso, la stringa originale "ABC 123" avrà i numeri "123" rimossi dalla stringa perché il metodo di categoria utilizza il NSString metodo stringByTrimmingCharactersInSet:.

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

Passaggio 3: importa la categoria

Fai clic su "ViewController.h" e importa la categoria aggiungendo il seguente codice.

 #import "NSString + RemoveNums.h"

Passaggio 4: testare la categoria

Fare clic su "ViewController.m" e aggiungere il seguente codice al viewDidLoad metodo. La variabile locale stringWithNums contiene una combinazione di lettere e numeri. La riga successiva prende la variabile string e la esegue attraverso il metodo category removeNumbersFromString. Finalmente, NSLog restituisce il valore restituito della stringa appena tagliata senza numeri.

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

Passaggio 5: utilizzare il metodo di categoria

Fai clic su Prodotto> Esegui o fai clic sulla freccia "Esegui" nell'angolo in alto a sinistra per testare il codice. Notare che la console mostra la stringa di input originale, "ABC 123", nonché la stringa dopo che è stata modificata dal metodo di categoria e che i numeri sono stati rimossi.

Conclusione

La sottoclasse è un modo per aggiungere funzionalità a un oggetto, ma evitare una sottoclasse non necessaria utilizzando una categoria aiuterà a ridurre la quantità di codice e manterrà i progetti più organizzati. Ci sono una serie di scenari in cui l'utilizzo di una categoria è vantaggioso. Condividi i tuoi scenari di categoria nei commenti qui sotto.