¿Qué @private
significa en Objective-C?
ios
objective-c
cocoa
private
Jeff Wolski
fuente
fuente
Respuestas:
Es un modificador de visibilidad: significa que las variables de instancia declaradas como
@private
solo pueden acceder las instancias de la misma clase . No se puede acceder a los miembros privados mediante subclases u otras clases.Por ejemplo:
Además, para aclarar, los métodos son siempre públicos en Objective-C. Sin embargo, hay formas de "ocultar" las declaraciones de métodos. Consulte esta pregunta para obtener más información.
fuente
Como dijo htw, es un modificador de visibilidad.
@private
significa que solo se puede acceder al ivar (variable de instancia) directamente desde una instancia de esa misma clase. Sin embargo, eso puede no significar mucho para ti, así que déjame darte un ejemplo. Usaremos losinit
métodos de las clases como ejemplos, por simplicidad. Voy a comentar en línea para señalar elementos de interés.Entonces, para responder a su pregunta, @private protege a los ivars del acceso de una instancia de cualquier otra clase. Tenga en cuenta que dos instancias de MyFirstClass podrían acceder a todos los ivars de cada uno directamente; se supone que dado que el programador tiene control completo sobre esta clase directamente, usará esta habilidad sabiamente.
fuente
@private
la plantilla para un objeto, ya no es tan raro.@implementation
bloque. Y una vez que haces eso, son efectivamente privados sin importar los modificadores de visibilidad, ya que ni siquiera son visibles para nadie fuera de ese archivo.Es importante comprender lo que significa cuando alguien dice que no puede acceder a una
@private
variable de instancia. La verdadera historia es que el compilador le dará un error si intenta acceder a estas variables en su código fuente. En versiones anteriores de GCC y XCode, solo recibiría una advertencia en lugar de un error.De cualquier manera, en tiempo de ejecución, todas las apuestas están apagadas. Se puede acceder a estos
@private
y a los@protected
ivars mediante un objeto de cualquier clase. Estos modificadores de visibilidad solo dificultan la compilación del código fuente en el código de máquina que viola la intención de los modificadores de visibilidad.¡No confíe en los modificadores de visibilidad de ivar por seguridad! No proporcionan ninguno en absoluto. Son estrictamente para la aplicación en tiempo de compilación de los deseos del creador de la clase.
fuente