2012-02-23 7 views
7

Si tengo una propiedad de cadena de solo lectura, ¿es necesario especificar strong (o retain) o copy en la declaración? Si no especifico, ¿se supone uno de ellos?¿Necesita una propiedad readonly de Objective-C especificar strong o copy?

Me parece que el atributo de propiedad solo es útil cuando tienes un setter.

@property (nonatomic, readonly) NSString *name; 
+0

"asignar" siempre se asume si no especifica –

+1

Consulte http://stackoverflow.com/questions/9397322/does-property-copy-in-combination-with-readonly-make-sense para una discusión similar. – Monolo

+0

Gracias Monolo, +1 en el enlace. – Boon

Respuesta

9

Eso es principalmente correcto. Para una propiedad readonly, strong, retain, weak y assign no tienen ningún efecto. Pero si también declara la propiedad en otro lugar como readwrite (más frecuentemente en una categoría anónima en el .m), entonces los otros modificadores deben coincidir.

+0

¡Buena respuesta! Pero si la propiedad readonly no tiene un getter y no se redeclara como readwrite internamente, strong también debería aplicarse a la propiedad porque ahora tiene un ivar, ¿es correcto? –

Cuestiones relacionadas