2010-10-19 25 views
16

Sólo una pregunta rápida, si se me permite, tengo siempre (ya que el aprendizaje obj-c) escrita propiedades int de la siguiente manera ...@property para el tipo int?

@property(nonatomic, assign) int myValue; 

Ahora estoy pensando que esto podría ser excesiva y que también podría escribir ...

@property int myValue; 

Sólo por curiosidad, sé que "asignar" es el comportamiento por defecto y que "no atómica" puede ser fraccionalmente más rápido ...

todo lo mejor

Gary

Respuesta

8

Bueno, la cuestión de la declaración atomicidad es una separada de si usted explícitamente declara los atributos que son los predeterminados. El primero dependerá de la naturaleza de su código: ¿es probable que exista un acceso conflictivo de múltiples hilos a la propiedad?

En cuanto a esto último, es sobre todo una cuestión de estilo, pero, en general, creo que debe errar por el lado de la claridad explícita. ¿Exactamente cuántos segundos de tu vida te cuesta escribir esas pocas teclas?

2

Nonatomic genera menos código y es ligeramente más rápido. Estoy de acuerdo, es muy detallado.

Si su aplicación puede utilizar varios hilos, te alegrarás de haber puesto esos calificadores explícitos cuando se encuentra con bichos raros ...

33
@property(nonatomic, assign) int myValue; 

no es lo mismo que

@property int myValue; 

El valor predeterminado para una propiedad es atómica (no hay palabra clave explícita atomic). Entonces el segundo ejemplo es una propiedad atómica. Para una propiedad de tipo primitivo, no sé si se produce algún bloqueo, pero probablemente se introducirá una barrera de escritura en la memoria (es decir, el colocador forzará que el valor se escriba nuevamente en la memoria principal, en lugar de solo en la memoria caché). Por lo tanto, las propiedades atómicas son considerablemente más lentas que las propiedades no atómicas. Sin embargo, como una fracción del tiempo de ejecución total del programa, aún podrían representar un porcentaje muy pequeño. No lo sabrás hasta que perfiles tu código.

Cuestiones relacionadas