Video: Hvordan skrive en god fagtekst 2024
For å gjøre forekomstvariabler tilgjengelig utenfor deres definerende klasse på en kontrollert måte, er den beste praksis i iOS app-utvikling å skrive tilgangsmetoder (også kalt > getter og settere ). Egenskaper gir en deklarativ måte å gjøre dette ved bruk av eiendomsdirektiver @property og @synthesize. Ved å bruke en deklarativ stil gjør du at programmet gjør noe uten å skrive noen kode. Koden er skrevet, men av kompilatoren (som automatisk genererer tilgangsmetoder), ikke av deg.
For å starte, må eiendommen deklareres i grensesnittet til StackOfInteger-klassen. Følgende utdrag viser hvordan du gjør det ved å bruke @property compiler-direktivet:
@interface StackOfInteger: NSObject {@protected // Dette er standard NSMutableArray * -elementene; @private int sist;} @property (readonly, atomic) int stackPointer; … andre StackOfInteger metoder -d
Merk at selv om begrepet
egenskap synes å være nærmere i betydningen av en variabel enn en metode, går egenskapsdefinisjonen i den delen der metodene er definert, ikke der instansvariablene er definert. Vær også oppmerksom på at denne egenskapen har to attributter: atomic og readonly.
I dette eksemplet er stakPointer-egenskapen koblet til instansvariabelen sist. Syntetiseringsdirektivet ser slik ut:
Eiendommen er nå klar til bruk.
Du kan bruke egenskapen på to måter, som vist i hovedfunksjonen til eksempelet:
Du kan bruke en tilgangsmetode:
-
printf ("Antall elementer% dn", [myStack stackPointer]);
Eller du kan bruke punktnotasjon til å gjøre det samme, som vist her:
-
printf ("Antall elementer med punktnotering% dn", myStack.Stakkpeker);
Merk at navnene på accessoreren (getters og setters) følger en navngivningskonvensjon. Getter-metoden er navnet på eiendommen. Så, for egenskapen stackPointer, er getter-metoden også stablePointer. Setter-metoden er navnet på eiendommen i kamel-saken prefixed av strengsettet - navnet på setter-metoden for stackPointer er setStackPointer.
Bruk
camel case stavemåte (en stor bokstav midt på et begrep) når du stavemåte disse metodene. Derfor er S i ordstabelen stor i navnet på setter-metoden, selv om den ikke er kapitalisert i navnet på eiendommen. Merk at settermetoden ikke genereres for denne egenskapen fordi den er skrivebeskyttet. Det er på tide å gå videre til egenskapene til egenskaper. De er alle i følgende liste sammen med hva de gjør:
nonatomic: Som standard er tilgangsmetoder som genereres for egenskaper, låsing for å gjøre dem sikre for samtidig tilgang av multithreaded programmer. Spesielt er standardoppførelsen atomisk. Hvis du bruker attributten nonatomic, brukes ingen låsing.
-
Det er ikke et attributt som heter atomisk (atomoperasjon antas av mangelen på den ikke-atomiske egenskapen).
readwrite: Hvis du bruker denne egenskapen, kan den skrives til og lese. Både en getter og en setter blir gjort tilgjengelig ved syntese.
-
readonly: Kompilatoren gjør bare en getter tilgjengelig.