C objetivo:¿Hacer iVars @public o @synthesizing @properties para ellos?¿Cuándo debo utilizar propiedades?

StackOverflow https://stackoverflow.com/questions/8984921

  •  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.

¿Fue útil?

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 @synthesizeAl 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.

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