Video: Week 7, continued 2024
Metoder erklæringen for iOS-apper kan se bisarre ut til alle som er mer kjent med andre språk, for eksempel Java eller C ++. Bare husk at alle offentlige -metodene til klassen er deklarert i metodedeklarasjonsdelen i grensesnittfilen, ved hjelp av følgende format:
:
Den første - indikerer at metoden er en forekomst metode. A + indikerer at metoden er en klassemetode. Hver parameterdefinisjon i listen over parametere ser slik ut:
:
Se igjen metoden i grensesnittspesifikasjonen for StackOfInteger:
@interface StackOfInteger: NSObject {Merk at for den første parameteren - eller om det bare er en parameter - etiketten er ikke som er angitt. Dette er et eksempel på en metode i StackOfInteger (med to parametere):
- (void) push2: (int) intValue1 another: (int) intValue2;Husk at det finnes en metode (ingen ordspill ment) bak denne galskapen. Etikettene gjør metodeinnkallingen mer lesbar. For eksempel er [anArray insertObject: anObject atIndex: 5] mer lesbar enn [myArray insertObject: anObject: 5], der meningen med den andre parameteren ikke er lett å fjerne. Derfor, i postfixall-programmet
push2: 5 en annen: 6;er litt mer forståelig enn
push2: 5: 6;selv om begge betyr nøyaktig det samme.
Bare offentlige metoder må deklareres i grensesnittfilen. Programmet ditt kan også inneholde private metoder og C-funksjoner. Disse må ikke deklareres i grensesnittfilen.
Merk at metoden CreateWithExpression er en klassemetode som du kan bruke i stedet for initWithExpression for å lage en forekomst av en PostfixCalculator allerede preinitialisert med et postfix-uttrykk.
Merk at klassemetoder ikke er de samme som statiske funksjoner som du kan deklarere i filen din. Klassemetoder kan arves og overstyres av underklasser. Statiske metoder kan ikke.
Interessant forekommer forekomstvariabler på klassenivå ikke i Mål-C. Imidlertid kan de simuleres. For et eksempel på hvordan du gjør det, sjekk ut instansvariabler på et klassenivå.
Du kan ikke ha to metoder med samme navn, men et annet nummer, eller til og med en annen rekkefølge av parametere. Metode overbelastning er ikke mulig, noe som ikke er som de fleste vanlige OO-språk som C ++ og Java.