Ich habe kürzlich versucht, ein älteres Xcode-Projekt zu kompilieren (das früher einwandfrei kompiliert wurde), und jetzt sehe ich viele Fehler in dieser Form:
error: writable atomic property 'someProperty' cannot pair a synthesized setter/getter with a user defined setter/getter
Das Codemuster, das diese Fehler verursacht, sieht immer so aus:
// Interface:
@property (retain) NSObject * someProperty;
// Implementation:
@synthesize someProperty; // to provide the getter
- (void)setSomeProperty:(NSObject *)newValue
{
//..
}
Ich kann sehen, warum der Fehler generiert wird. Ich fordere den Compiler auf, meine Eigenschafts-Accessoren (sowohl Getter als auch Setter) zu synthetisieren, und überschreibe den Setter unmittelbar danach manuell. Dieser Code hat immer ein wenig gerochen.
Also, was ist der richtige Weg, um dies zu tun? Wenn ich @dynamic
anstelle von verwende @synthesize
, muss ich auch den Getter schreiben. Ist das der einzige Weg?
atomic
Eigenschaften vor? Bei atomaren Eigenschaften ist es möglicherweise eine gute Idee, das Getter / Setter-Paar in Bezug auf die Sperrstrategie synchron zu halten. Dies ist schwierig, wenn ein Teil synthetisiert wird, während der andere benutzerdefinierter Code ist.