Grund für die Verwendung von ivars vs-Eigenschaften, die in objective c

Habe ich bisher nicht finden alle Informationen zu diesem Thema und das meiste, was ich darüber weiß, ist gekommen, der durch kompletten Zufall (und ein paar Stunden versuchen, um herauszufinden, warum mein code nicht funktioniert). Während das lernen objective-c die meisten tutorials die ich gefunden habe, machen, Variablen und Eigenschaften mit dem gleichen Namen. Ich verstehe nicht die Bedeutung zu, da es scheint, dass die Eigenschaft macht die ganze Arbeit und die variable nur irgendwie sitzt es. Zum Beispiel:

Test.h

@interface Test : NSObject {
    int _timesPlayed, _highscore;
}

@property int timesPlayed, highscore;

//Methods and stuff

@end

Test.m

@implementation Test

  @synthesize timesPlayed = _timesPlayed;
  @synthesize highscore   = _highscore;

  //methods and stuff

@end

, Was ich weiß,

1) Okay, so habe ich heute gefunden (nach Stunden der Verwirrung) ist, dass, egal, wie viel ändern Sie die Eigenschaften highscore = 5091231 es würde nichts ändern, wenn Sie versuchen, zu nennen [test highscore] als es noch die Rückgabe der Wert der _highscore, die (glaube ich) ist die ivar dieser test.h. Also alle änderungen von Variablen im test.m muss sich ändern _highscore und nicht die highscore. (Korrigiert mich wenn ich hier falsch bitte)

2) Wenn ich es richtig verstehe (ich wahrscheinlich nicht) die ivars set im test.h stellen den eigentlichen Speicher, in dem, wie der @ - Eigenschaften sind nur Möglichkeiten zum Zugriff auf diesen Speicher. Also außerhalb von der Umsetzung habe ich keinen Zugriff auf _highscore ohne den Umweg über die Eigenschaft.

Was ich nicht verstehe

Im Grunde, was ich nicht bekommen, über diese situation ist, ob ich nicht verwenden müssen, die ivars, oder wenn ich einfach die Verwendung von @property und @synthetisieren. Es scheint, wie die ivars sind nur extra code, der nicht wirklich etwas zu tun, sondern verwirren mich. Einige der jüngsten tuts, die ich gesehen habe scheinen nicht zu verwenden, ivars dann aber einige tun. Also das ist nur eine Codierung Präferenz-Sache, oder ist es tatsächlich so wichtig? Ich habe versucht, auf der Suche durch die Dokumentation von Apple, aber ich bekomme ziemlich verloren da und scheinen nie zu finden, was ich Suche. Jede Beratung wird sehr geschätzt.

InformationsquelleAutor CaldwellYSR | 2012-07-13

Schreibe einen Kommentar