Por lo que yo entiendo, @property declara getter y setter en el archivo .h y @synthesize implementa el getter y el setter en los archivos .m. Además, es posible escribir su propia implementación para getter y setter en lugar de usar @synthesize.Objective-C: @property declaration without implementation (@synthesize)
Entonces, si siempre necesitamos implementar setter/getter, ¿por qué necesitamos declararlo adicionalmente? @property parece ser redundante para mí y una fuente de errores.
¿Qué sucede cuando declaro @property pero olvido implementarlo con @synthesize o manualmente? ¿Qué sucede cuando uso @synthesize y olvido la declaración @property?
bueno que agregaron esto. Gracias por la respuesta –
Todavía hay un caso en el que tendrá que usar ambas propiedades y sintetizar juntas. El compilador usará el nombre de la propiedad más el prefijo de subrayado para crear el ivar. Si el ivar _propertyname colisiona con una variable de instancia privada, tendrá que sintetizarlo en un nuevo ivar. Por ejemplo: si está subclasificando la UIToolbar y declara una propiedad que la nombra delegada, obtendrá un error al intentar usar el comando ivar _delegate porque la UIToolbar contiene una variable de instancia privada id _delegate. Puede resolver esto usando '@synthesize delegate = _mydelegate;'. – lolol