Video: Learning iOS: Create your own app with Objective-C! by Tianyu Liu 2024
Interessant gir Objective-C deg mulighet til å legge til egne metoder til eksisterende klasser i en iOS-app, selv de klassene at du ikke har skrevet. Å legge til flere metoder i en klasse er nyttig i en situasjon der den nye oppførselen bare brukes i visse situasjoner.
Som et eksempel kan det hende du finner ut at et bestemt program (f.eks. En palindrom-kontrollør) må reversere stort sett enhver streng det handler om!
Det kan gjøre programmet for komplisert til å lage din egen underklasse av NSString med den ekstra omvendte metoden. Snarere kan det hende du synes det er mye mer praktisk å legge til den nye oppførselen til den opprinnelige klassen. Ville det ikke vært fint hvis du kunne legge til en omvendt metode for å NSString seg selv!
Merk at du ikke kan endre det opprinnelige grensesnittet eller implementeringen NSString fordi det er en rammeklasse, og du har ikke kildekoden. Du kan imidlertid forlenge NSString-klassen (eller en 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 *) bakover; -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 (som inkluderer koden for metoden bakover) nedenfor (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>% @