2010-07-27 4 views
0

Je ne suis pas tout à fait sûr si je comprends correctement atomique. D'après ce que j'ai lu, il est dit que l'atomique est la valeur par défaut pour l'iPhone. Maintenant est-ce pour les propriétés seulement, ou n'importe quelle variable d'instance. Par exemple, si j'ai une variable d'instance que je vais écrire mes propres setters/getters, et que je ne la déclare pas comme une propriété, est-ce que cela rend cette instance atomique? L'inconvénient est-il principalement le fait qu'il est optimisé pour l'enfilage, ce dont ma variable d'instance/application n'a peut-être même pas besoin? Merci.Variables d'instance, par défaut étant atomique

Répondre

0

Le mot-clé atomic dans les déclarations de propriétés fait double emploi - il s'agit à la fois de la documentation et d'une instruction pour les accesseurs synthétisés. Le mot-clé s'applique uniquement aux méthodes d'accesseur - l'accès manuel à ivars est essentiellement identique à l'accès à une structure C et n'est jamais atomique.

Vous pouvez toujours écrire vos propres accesseurs si vous utilisez la syntaxe de déclaration de propriété, mais si vous le faites, vous devez adhérer à la déclaration (si vous ne le déclarez pas nonatomic, vous devez implémenter manuellement l'atomicité). Si vous @synthesize vos propriétés, ils suivront votre déclaration automatiquement. L'inconvénient des propriétés atomiques est qu'elles utilisent le verrouillage, ce qui est assez cher - si la propriété n'est pas accessible par plusieurs threads, vous devez toujours le déclarer nonatomic (au moins sur l'iPhone).

+0

Qu'en est-il de la déclaration d'une propriété flottante? Je pensais que toute structure 32 bits était atomique par défaut sur l'iphone – Pochi

Questions connexes