Benutzerdefinierte Getter & amp; Setter iOS 5
Möchte ich überschreiben der getter und setter in meiner ObjC Klasse ARC.
.h-Datei
@property (retain, nonatomic) Season *season;
.m-Datei
@synthesize season;
- (void)setSeason:(Season *)s {
self.season = s;
//do some more stuff
}
- (Season *)season {
return self.season;
}
Bin ich hier etwas fehlt?
InformationsquelleAutor der Frage alex | 2012-01-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Yep, das sind unendliche rekursive Schleifen. Das ist, weil
übersetzt der compiler in
und
ist übersetzt in
Loszuwerden, die dot-accessor
self.
und Ihr code korrekt sein.Diese syntax kann jedoch verwirrend sein, da Ihre Eigenschaft
season
und Ihre variableseason
teilen den gleichen Namen (obwohl Xcode wird etwas die Verwirrung verringern, die durch färben, diese Entitäten unterschiedlich). Es ist möglich, explizit ändern Ihre Variablen-Namen schreibenoder, besser noch, lassen Sie den
@synthesize
Richtlinie insgesamt. Die modernen Objective-C-compiler wird automatisch zu synthetisieren, die accessor-Methoden und die Instanz-variable für Sie.InformationsquelleAutor der Antwort jlehr
Wenn Sie gehen, um Ihre eigene getter-und setter, müssen Sie pflegen eine interne variable:
InformationsquelleAutor der Antwort Jeremy
Dem, was du bist fehlt, ist, dass der Objective-C-compiler grundsätzlich stellt sich die
self.foo = bar
syntax in[self setFoo:bar]
undself.foo
in[self foo]
. Ihre Methoden, wie Sie derzeit umgesetzt sind, sich zu nennen. Als Jeremy schlägt vor, den Sie brauchen, um Sie umzusetzen, so dass der setter tatsächlich weist Ihr den Wert genannt wird es mit einer Instanz-Variablen der Klasse und der getter liefert den Wert der Instanzvariable.InformationsquelleAutor der Antwort Noah Witherspoon