Hace poco intenté compilar un proyecto anterior de Xcode (que solía compilar muy bien), y ahora estoy viendo un montón de errores de esta forma:error: la propiedad atómica escribible no puede emparejar un setter/getter sintetizado con un setter/getter definido por el usuario
error: writable atomic property 'someProperty' cannot pair a synthesized setter/getter with a user defined setter/getter
el patrón de código que hace que 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 los accesadores de mi propiedad (tanto getter como setter), y luego inmediatamente sobreescribo el setter manualmente. Ese código siempre olía un poco.
Entonces, ¿cuál es la forma correcta de hacerlo? Si uso @dynamic
en lugar de @synthesize
, tendré que escribir también el captador. ¿Es esa la única forma?
¿Esto solo ocurre con las propiedades 'atomic'? En el caso de las propiedades atómicas, podría ser una buena idea mantener el par getter/setter sincronizado con respecto a la estrategia de bloqueo. Esto es difícil si una parte se sintetiza mientras que la otra es un código personalizado. –
Desaparece sin duda si hago la propiedad no atómica. Interesante. Ni siquiera había pensado en el problema de la sincronización. –
Visité este tema para encontrar una solución a ese problema exacto. Realmente no quiero escribir un getter y un setter solo. Oh, bueno ... –