Cómo utilizar las propiedades declaradas en su aplicación para ios

Video: Tracktor Dj | La Mejor App DJ de AppStore |iPod|iPad|iPhone|

Aunque las propiedades y el acceso instancia variables y descriptores de acceso son a menudo puré juntos en la mente de los programadores de aplicaciones de iOS, asegúrese de que entiende la naturaleza única de propiedades y la forma en que realmente trabaja.

Mientras métodos tienen que ver con el envío de mensajes a los objetos para hacer las cosas, propiedades tienen que ver con el estado de los objetos. Marcos y otros objetos se comportan basan en lo que encuentran en sus propiedades (por lo tanto, se puede modificar el comportamiento del objeto modificando una propiedad).

También es posible que desee saber algo sobre el estado del objeto, como su color, o alrededor de controlador de vista raíz de una ventana.

controladores de vista de su aplicación, que actúan como un puente entre las vistas y el modelo, tienen que ser capaces de encontrar el objeto de modelo para obtener los datos y enviarlo actualiza. Todo esto se hace uso de las propiedades. Una propiedad tiene el siguiente aspecto:

@property (fuerte, no atómica) IBOutlet UIImageView * car-

Sin embargo, no todas las propiedades son puntos de venta. Si selecciona la RTAppDelegate.h presentar en el inspector de proyecto, se puede ver que incluye una propiedad:

@property (fuerte no atómica,) UIWindow * ventana-

Como se puede ver, el orden de los atributos (fuerte, no atómica frente nonatomic, fuerte) no importa.

Lo que comprende una propiedad declarada

Una propiedad declarada tiene dos partes: su declaración y su aplicación.

La declaración utiliza el @propiedad palabra clave, seguido de un conjunto opcional entre paréntesis de atributos, la información de tipo, y el nombre de la propiedad.

El acceso a las propiedades se implementa mediante métodos de acceso (aunque dentro de la clase que declara la propiedad, la propiedad se puede acceder directamente, al igual que las variables de instancia son). Usted puede escribir sus propios métodos de acceso o puede dejar que el compilador lo haga por usted.

Los nombres predeterminados para los métodos get y set asociados con una propiedad son whateverThePropertyNameIs para el comprador y setWhateverThePropertyNameIs: Para el organismo. En el caso de viaje, el método getter es viaje, y el método setter es setTrip:.

Para acceder a la viaje propiedad en el AppDelegate, se utilizaría

AppDelegate * AppDelegate = [[UIApplication sharedApplication] delegada] -Trip * thisTrip = [viaje AppDelegate] -

o para establecer que la propiedad, el uso

AppDelegate * AppDelegate = [[UIApplication sharedApplication] delegada] - [AppDelegate setTrip: newTrip] -

delegar, por cierto, es una UIApplication propiedad.

La sintaxis con punto

Objetivo-C proporciona un punto (.) Operador que ofrece una alternativa a la notación de corchetes ([]) Para invocar métodos de acceso. Se utiliza la sintaxis con punto de la misma forma que lo haría cuando se accede a un elemento de estructura C:

Viaje * thisTrip = appDelegate.trip-

o para establecer que la propiedad, el uso

appDelegate.trip = newTrip-

Cuando se utiliza con los objetos, sin embargo, la sintaxis con punto actúa como “azúcar sintáctica” - se transforma por el compilador en un mensaje de acceso. la sintaxis con punto no recibe directamente o establecer una variable de instancia. Los ejemplos de código utilizando la misma son el equivalente exacto al uso de la notación de soporte.

Video: iphone 4 Completo análisis y tour por sus aplicaciones

Muchos programadores como la sintaxis con punto, ya que puede ser más readable- basta pensar en esas situaciones notación del soporte en el que está accediendo a una propiedad que es una propiedad de otro objeto (que en sí es una propiedad de otro objeto, y así sucesivamente).

La ventaja real de la sintaxis con punto, sin embargo, es que el compilador generará una error cuando detecta un intento de escribir en una propiedad declarada de sólo lectura. Esto es mucho mejor que tener que conformarse con un método no declarado advertencia porque se invoca un método setter inexistente, con la aplicación posteriormente no en tiempo de ejecución.

Cuando se utiliza el compilador para crear métodos de acceso para usted, el compilador crea una variable de instancia del tipo que ha declarado que luego utilizará para almacenar y recuperar el valor de la propiedad con el nombre de la propiedad. Por ejemplo, para la siguiente propiedad:

@property (débil, no atómica) IBOutlet UIImageView * car-

la declaración

@synthesize car-

genera una variable de instancia con el nombre de coche de UIImage tipo .

Video: Tutorial de Workflow para iOS

Sin embargo, si se deja el compilador generará automáticamente una @synthesize declaración de que, en realidad se utiliza una instancia nombre de la variable comienza con un carácter de subrayado, por lo que obtendría el siguiente código generado para usted detrás de las escenas:

coche @synthesize = _car-

Esto le permite distinguir entre el nombre de la propiedad (accede por self.car) Y la instancia de nombre de variable (visitada simplemente como _coche).

Apple recomienda que utilice la referencia de la propiedad (self.car) En los métodos normales, pero el uso de la _coche variable en en eso métodos. Esto se aplica sólo al código dentro de un archivo. Código otras partes de su aplicación tiene acceso a la propiedad, ya que se declara en el @interfaz sección de la .h.

No hay manera de que el código en cualquier lugar de la aplicación, excepto en el .metro archivo de una clase puede acceder a la variable de instancia directamente cuando se deja que el compilador haga el trabajo. Y eso es una buena cosa para asegurarse de que la encapsulación se proporciona adecuadamente.

Escribir sus propios métodos de acceso

Usted no tiene que utilizar los descriptores de acceso generados por el compiler- y, a veces, incluso tiene sentido para poner en práctica su propia cuenta. Si implementa los métodos de acceso usted mismo, debe asegurarse de que su planteamiento coincide con los atributos que ha declarado.

Por ejemplo, si usted tiene un montón de gastos generales para crear un objeto que no pueda ser utilizado, puede crear su propio descriptor de acceso captador que crea el objeto de la primera vez que se accede. Además, escribiendo su propio descriptor de acceso significa que usted no tiene que tener una variable de instancia asociado con la propiedad.

Podría, por ejemplo, tener una zona propiedad en un objeto que representa un rectángulo. El captador de zona podría realizar largo x ancho y nunca se moleste con una variable de instancia.

El acceso a las variables de instancia con accessors

Si no se utiliza yo, se accede a la variable de instancia directamente. En el siguiente ejemplo, el conjunto accesor método para _currentDestinationIndex No se invoca:

_currentDestinationIndex = [[NSUserDefaultsstandardUserDefaults] objectForKey: CurrentDestinationKey] -

Lo anterior no es la misma que

self.currentDestinationIndex = [[NSUserDefaultsstandardUserDefaults] objectForKey: CurrentDestinationKey] -

Para utilizar un descriptor de acceso, debe utilizar yo.

Artículos Relacionados