Video: HVORDAN VILLE 3. VERDENSKRIG SE UD? 2024
Deklarer instansvariabler for iOS-apper krever at hver forekomst har sin egen variabel. Derfor forekommer forekomstvariablene for hver forekomst (med andre ord, hver forekomst får en kopi av disse variablene).
I PostfixCalculator-klassen er forekomstvariablene
-
uttrykk, som er (en peker til) en NSString-objekt
-
kalkulatorStack, som er (også en peker) til et StackOfInteger-objekt
En variabel definerer hvor den kan være Brukes. Det er fire alternativer: beskyttet: Instansvariabler er synlige og kan direkte henvises til (det er brukt) i alle forekomstmetoder for en klasse og noen underklasser.
-
beskyttet er standardomfanget. > privat: Disse variablene brukes bare i klassen som definerte dem.
offentlig: Disse variablene er synlige for og kan være oss ed i noen annen klasse eller metode.
-
-
pakke: Disse variablene er bare tilgjengelige i biblioteket der de er definert.
Se på et eksempel fra PostfixCalculator: -
@interface PostfixCalculator: NSObject {@public NSString * -uttrykk; @private StackOfInteger * calculatorStack;} -d
Her uttrykkes uttrykk som en offentlig instansvariabel, mens calculatorStack er erklært som privat.
Andre mål enn beskyttet brukes ikke veldig ofte i Objective-C-programmer, delvis fordi de fleste ikke forstår dem virkelig. Vurder å bruke en av følgende to strategier:
La hver variabel være beskyttet, og skriv tilgangsmetoder for de variablene du vil synliggjøre utenfor klassen hierarkiet.For å kontrollere tilgangen enda mer:
-
Erklære variabler som privat.
-
Gi tilgangsmetoder for de variablene du vil gjøre tilgjengelig utenfor klassen.
-
Hvis det er mulig, hold deg borte fra annoterende variabler som offentlig og pakke.
-
For å få tilgang til en instansvariabel i offentlig rekkefølge, bruker du pekeren til medlemsoperatøren (aka piloperatøren ->). Si at variabeluttrykket i PostfixCalculator-grensesnittet er deklarert som følger:
@public NSString * -uttrykk;
-
Du får tilgang til det slik:
myExpression = myCalculator-> uttrykk;
På den annen side, hvis variabelen er erklært som privat (eller standard for beskyttet), må du bruke en tilgangsmetode for å få verdien, som vist her:
NSString * myExpression = [myCalculator getExpression];
Noen objektiv-C-kompilatorer, for eksempel den nåværende gcc-kompilatoren på Mac, fullfører ennå ikke privat omfang.I stedet genererer de bare en advarsel hvis du bruker en variabel som er erklært som privat utenfor klassen der den er erklært. Advarselen ligner på følgende:
advarsel: instansvariabel … er @private; Dette vil bli en vanskelig feil i fremtiden.
På den annen side gjør kompilatoren inne i Xcode det rette og sier: Instansvariabel … er privat.