Pregunta

Como entiendo, @synthesize en realidad está generando los Getters y Setters. Pero, ¿qué está haciendo entonces @property? ¿Se trata simplemente de configurar los parámetros para esa genial función mágica @synthesize?

¿Fue útil?

Solución

Escribes @property en el archivo de cabecera

@property float value;

es equivalente a:

- (float)value; 
- (void)setValue:(float)newValue; 

Obtenga información para OTRAS clases, que su clase tiene estos métodos

@synthesize phisicaly CREAR estos métodos en la implementación de clase

Otros consejos

@property declara el nombre como una propiedad. Esto significa que será accesible a través de la sintaxis de puntos ( object.value ).

@synthetize puede verse como una macro, que crea los métodos get y set. Es útil saber que puede anular esos métodos, incluso si escribe tiene @synthetize en su lugar.

@property declara getter y / o setter

@synthesize los implementa.

Existe un error común de que la directiva @synthesize es necesaria para implementar los creadores y captadores creados con la directiva @property, pero este no es el caso. El uso de la directiva @property sin @synthesize seguirá generando setters / getters y le permitirá usar la notación de puntos. Sin embargo, si se omite la directiva @synthesize, el compilador generará las variables de instancia correspondientes con un carácter de subrayado inicial, por ejemplo. la propiedad myVar tendrá una variable de instancia de _myVar.

El uso de un guión bajo es una convención común que le permite diferenciar entre propiedades y variables de instancia. También es común que las propiedades y las variables de instancia compartan el mismo nombre, que es lo que hace @synthesize de forma predeterminada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top