C objetivo:¿Hacer iVars @public o @synthesizing @properties para ellos?¿Cuándo debo utilizar propiedades?
-
13-11-2019 - |
Pregunta
Tengo algunas variables de instancia en mi clase a las que me gustaría que estuvieran accesibles desde cualquier lugar.Al igual que:
@interface SomeObject : NSObject
{
@public
NSString *someString;
}
@end
@implementation SomeObject
@end
Puedo acceder a la propiedad desde la instancia usando el ->
sintaxis como la siguiente, como lo haría en C++:
someObjectInstance->someString
¿Debo hacer una propiedad para someString
¿Cuando lo único que quiero es que sea accesible desde el mundo exterior?yo crearía un @property
para someString
en mi interfaz y @synthesize
en mi implementación, lo que me permitiría acceder a él utilizando la sintaxis de puntos.
Solución
En términos generales, si desea exponer datos, debe utilizar propiedades.Hacer públicas las variables de instancia es una mala idea en general.
Otros consejos
Es la forma más orientada a objetos de hacerlo porque al usar una propiedad puedes cambiar el getter/setter más tarde (en lugar de sintetizarlo) si quieres que haga otra cosa.
Sí, porque lo que estás haciendo cuando lo conviertes en un @property
está indicando a las personas que lo usan para llamar al setSomeString
y someString
métodos, en efecto.Incluso si eres @synthesize
Al usarlos, es mejor para la calidad de su código utilizar los métodos, porque podría cámbielos si es necesario.Si solo está utilizando la referencia del puntero, si necesita interceptar los accesos, no podrá hacerlo.