2010-06-02 2 views
1

Lorsque vous examinez du code Objective-C, les propriétés de classe sont souvent définies comme non atomiques. Pourquoi? Cela vous donne-t-il un regain de performance lorsque vous ne travaillez pas avec des threads, ou y a-t-il une autre raison?Propriétés non atomiques du cacao

+0

double possible [propriétés Objective-C: atomique vs nonatomic] (http://stackoverflow.com/questions/588866/objective-c-properties-atomic-vs-nonatomic) – bbum

Répondre

5

nonatomic Les accesseurs sont plus rapides car ils n'ont pas besoin de se verrouiller. C'est à peu près tout ce qu'il y a à faire. De l'documentation:

Si vous ne spécifiez pas nonatomic, puis dans un environnement compté de référence d'un accesseur synthétisé pour une propriété d'objet utilise un verrou et conserve et autoreleases la valeur la retournée mise en œuvre sera semblable à les éléments suivants:

[_internal lock]; // lock using an object-level lock 
id result = [[value retain] autorelease]; 
[_internal unlock]; 
return result; 

Si vous spécifiez nonatomic, puis un accesseur synthétisé pour une propriété d'objet retourne simplement la valeur directement.

+0

Merci pour cette réponse rapide . Je savais avant comment fonctionnent les propriétés nonatomiques, je ne savais pas l'avantage de les utiliser :-) –

Questions connexes