Recientemente intenté compilar un proyecto Xcode anterior (que solía compilar bien), y ahora veo muchos errores de esta forma:
error: writable atomic property 'someProperty' cannot pair a synthesized setter/getter with a user defined setter/getter
El patrón de código que causa estos errores siempre se ve así:
// Interface:
@property (retain) NSObject * someProperty;
// Implementation:
@synthesize someProperty; // to provide the getter
- (void)setSomeProperty:(NSObject *)newValue
{
//..
}
Puedo ver por qué se genera el error. Le digo al compilador que sintetice mis accesores de propiedad (tanto getter como setter), y luego inmediatamente anulo el setter manualmente. Ese código siempre olía un poco mal.
Entonces, ¿cuál es la forma correcta de hacer esto? Si uso en @dynamic
lugar de @synthesize
, también tendré que escribir el captador. ¿Es esa la única forma?
atomic
propiedades? En el caso de las propiedades atómicas, podría ser una buena idea mantener sincronizado el par getter / setter con respecto a la estrategia de bloqueo. Esto es difícil si una parte se sintetiza mientras que la otra es código personalizado.