Wie überschreibe ich einen eigenschaftssynthetisierten Getter?
iphone
objective-c
ios
Simone D'Amico
quelle
quelle
Antworten:
Innerhalb Ihrer Eigenschaftsdefinition können Sie Getter- und Setter-Methoden wie folgt angeben:
@property (nonatomic, retain, getter = getterMethodName, setter = setterMethodName) NSString *someString;
Sie können nur den Getter, nur den Setter oder beides angeben.
quelle
@synthesize
Ihre Variablen nicht mehr verwenden, Sie benötigen nur noch die@property
und dort müssen Sie nur noch Ihren Getter und / oder Setter angeben.Implementieren Sie die Methode einfach manuell, zum Beispiel:
- (BOOL)myBoolProperty { // do something else ... return myBoolProperty; }
Der Compiler generiert dann keine Getter-Methode.
quelle
@property
istatomic
(Standardeinstellung), einen@synthesize
Getter / Setter nicht korrekt mit einem manuell geschriebenen Getter / Setter mischen können .atomic
nicht ist , dass nützlich; Es wird nichts unternommen, um die Datenintegrität in einer Thread-Anwendung zu gewährleisten. Es verhindert lediglich, dass eine App aufgrund einer offensichtlichen Rennbedingung abstürzt. Wenn Sie sichatomic
stark verlassen, machen Sie es fast sicher falsch ... :)atomic
nicht freigelegt ist, können Sie nicht nur den Setter oder nur den Getter manuell implementieren und die Atomizität mit einem@synthesize
d-atomic
Setter / Getter sicherstellen .Implementieren Sie einfach Ihren eigenen Getter und der Compiler generiert keinen. Gleiches gilt für Setter.
Zum Beispiel:
@property float value;
ist äquivalent zu:
- (float)value; - (void)setValue:(float)newValue;
quelle
Ich möchte nur hinzufügen, ich konnte die BOOL-Eigenschaft nicht mit getter / setter überschreiben, bis ich Folgendes hinzufüge:
@synthesize myBoolProperty = _myBoolProperty;
Der vollständige Code lautet also:
in der Header-Datei:
@property BOOL myBoolProperty;
in der Implementierungsdatei:
@synthesize myBoolProperty = _myBoolProperty; -(void)setMyBoolProperty:(BOOL) myBoolPropertyNewValue { _myBoolProperty = myBoolPropertyNewValue; } -(BOOL) myBoolProperty { return _myBoolProperty; }
quelle