Cómo escribir métodos de acceso para aplicaciones de ios

Para hacer que las variables de instancia disponible fuera de su clase que define de una manera controlada, las mejores prácticas en el desarrollo de aplicaciones iOS es escribir métodos de acceso (también llamado captadores y set). Las propiedades proporcionan una manera declarativa de hacerlo a través del uso de la propiedad @property directivas y @synthesize.

Mediante el uso de un estilo declarativo, a hacer su programa de hacer algo sin necesidad de escribir código. Código está escrito, sino por el compilador (que genera automáticamente los métodos de acceso), no por usted.

Un ejemplo de una propiedad de la clase StackOfInteger sigue a continuación. La idea es permitir a un usuario de esta clase que lea el puntero de pila sin exponer la última variable y sin necesidad de escribir nuevos métodos.

Para empezar, la propiedad debe ser declarado en la interfaz de la clase StackOfInteger. El siguiente fragmento de código muestra cómo hacerlo usando la directiva @property compilador:

@interface StackOfInteger: NSObject {@protected // Este es el defaultNSMutableArray * @ elementos-privada int pasado -} @ propiedad (de sólo lectura, atómica) int ... stackPointer- otros métodos StackOfInteger-d

Tenga en cuenta que, a pesar de que el término propiedad parece estar más cerca en significado a una variable que a un método, la definición de la propiedad va en la sección donde se definen métodos, no donde se definen las variables de instancia. También hay que destacar que esta propiedad tiene dos atributos: atómicas y de sólo lectura.

Para ser claros, medios atómicos que se proporciona acceso simultáneo seguro y de sólo lectura significa que esta propiedad se puede leer pero no modificar.

Después, usted necesita para sintetizar el establecimiento mediante la directiva @synthesize, lo que significa que, o bien una nueva variable de instancia debe ser generada por la propiedad o una variable de instancia existente debe estar vinculado a ella. He aquí cómo se genera una nueva variable de instancia el mismo nombre que la propiedad StackPointer:

@synthesize stackPointer-

En este ejemplo, la propiedad StackPointer está vinculada a la instancia última variable. La directiva sintetizar ve así:

@synthesize StackPointer = última-

La propiedad está ahora listo para su uso.

Puede utilizar la propiedad de dos maneras, como se muestra en la función principal del ejemplo:

  • Se puede utilizar un método de acceso:

    printf ("Count de elementos% dn", [MyStack StackPointer]) -
  • O puede utilizar la notación de puntos para hacer la misma cosa, como se muestra aquí:

    printf ("Count de elementos usando la notación de puntos% dn", MyStack.stackPointer) -

La llamada notación de puntos es la abreviatura de una llamada al método. En lugar de utilizar los corchetes, [método de instancia] por ejemplo, simplemente escribir instance.method.

Tenga en cuenta que los nombres de descriptor de acceso get y set () siguen una convención de nomenclatura. El método de obtención es el nombre de la propiedad. Por lo tanto, para la StackPointer propiedad, el método de obtención es también StackPointer. El método de selección es el nombre de la propiedad en caso de camellos prefijado por el juego de cuerdas - el nombre del método setter para StackPointer es setStackPointer.

Utilizar caso ortografía camello (Una letra mayúscula en el medio de un término) al deletrear estos métodos. Por lo tanto, la S en la palabra pila está en mayúsculas en el nombre del método de selección, a pesar de que no está en mayúsculas en el nombre de la propiedad. Tenga en cuenta que no se genera el método de selección de esta propiedad, ya que es de sólo lectura.

Es hora de pasar a los atributos de las propiedades. Están todos en la lista siguiente, junto con lo que hacen:

  • no atómica: Por defecto, los métodos de acceso generados por propiedades incluyen el bloqueo para que sean seguros para el acceso simultáneo por programas multihilo. En concreto, el comportamiento predeterminado es atómica. Si se utiliza el atributo no atómica, no se utiliza ningún bloqueo.

    No es un atributo llamado atómica (operación atómica es asumido por la falta del atributo no atómico).

  • escritura y lectura: si utiliza esta propiedad, se puede escribir como también leer. Tanto un getter y setter se hacen disponibles a la síntesis.

  • de sólo lectura: El compilador hace solamente un captador disponible.

Artículos Relacionados