2010-10-31 3 views
10

Possible en double:
Objective-C properties: atomic vs nonatomicPourquoi devrais-je jamais utiliser nonatomic dans une propriété?

Par défaut, toutes les propriétés en Objective-C sont atomiques. Si j'ai besoin de nonatomic je dois le déclarer. Mais je me demande pourquoi devrais-je jamais utiliser nonatomic? Même si mes applications ne sont pas multi-thread, atomic semble être le moyen de le faire. Quels sont les avantages de nonatomic?

+4

@KennyTM: Ceci n'est pas un doublon de votre question liée. C'était demander ce que signifie atomic/nonatomic ce qui n'est pas la même chose que de demander si vous devriez jamais utiliser nonatomic. – JeremyP

Répondre

16

Une réponse courte est la performance. Si vous déclarez des propriétés comme atomic, les accesseurs synthétisés utiliseront des verrous pour s'assurer que les valeurs sont entièrement récupérées et définies. Si vous n'en avez pas besoin, par exemple si votre application est monothread, vous subissez une pénalité de performance pour ces verrous sans bénéficier d'un avantage.

+6

Par conséquent, définir les propriétés sur non atomique sans profilage compte comme une optimisation prématurée. – JeremyP

+1

Je suis aussi intrested si cela peut vraiment être significatif pour les performances en application courante d'utiliser cette propriété, sans nonatomic c'est juste plus lisible, un mot-clé inutilisé gratuit ... – Renetik

Questions connexes