Video: Learning iOS: Create your own app with Objective-C! by Tianyu Liu 2024
I IOS apputvikling kan Objective-C du legge til egne metoder til eksisterende klasser, til og med de klassene du ikke har skrevet. Hvis du legger til flere metoder i en klasse, er det nyttig i en situasjon der den nye oppførselen bare brukes i visse situasjoner.
Som et eksempel kan du finne at et bestemt program (si en palindrom-kontrollør) trenger å reversere stort sett en hvilken som helst streng det handler om! Det kan gjøre programmet for komplisert til å lage din egen underklasse av NSString med den ekstra omvendte metoden. I stedet kan det hende du synes det er mye mer praktisk å legge den nye oppførselen til originalen klassen.
Merk at du ikke kan endre det opprinnelige grensesnittet eller implementeringen NSString fordi det er en rammeklasse og du ikke har kildekoden. Du kan imidlertid forlenge NSString klasse (eller annen klasse) ved å definere en ny kategori. I filen PostfixAll. M du vil se at NSString-klassen har blitt utvidet med en metode som heter omvendt som følger:
@interface NSString (ReversibleString) - (NSString *) revers; -d
Som du kan se, definerer en kategori svært å definere et grensesnitt for en klasse. Faktisk gir en implementering av metodene til en kategori også svært å gi implementeringen for en klasse ved at metodene er vedlagt i en @ implementeringsblokk. Du kan se implementeringsblokken for kategorien under (i filen PostfixAll. M):
@implementation NSString (ReversibleString) - (NSString *) omvendt {NSMutableString * reversedString = [[NSMutableString alloc] init]; int stringLength = self. lengde; for (int i = stringLength-1; i> = 0; i--) {NSString * oneCharString = [egen substringWithRange: NSMakeRange (jeg, 1)]; [reversedString appendString: oneCharString];} return reversedString;} -d
Endelig er bruk av en metode som er definert i en kategori, ikke forskjellig fra bruken av noen annen metode, som det kan ses fra Følgende kodestykke hentet fra hovedfunksjonen til PostfixAll. m:
NSLog (@ "Skrive ut reversert streng>% @