2010-10-31 7 views
10

Mögliche Duplizieren:
Objective-C properties: atomic vs nonatomicWarum sollte ich jemals nichtatomare in einer Eigenschaft verwenden?

Standardmäßig werden alle Eigenschaften in Objective-C-Atom sind. Wenn ich nichtatomare brauche, muss ich es erklären. Aber ich frage mich, warum sollte ich jemals nichtatomare verwenden? Auch wenn meine Anwendungen nicht multi-threaded sind, scheint Atom der Weg zu sein. Was sind die Vorteile von nichtatomaren?

+4

@KennyTM: Dies ist kein Duplikat Ihrer verknüpften Frage. Das heißt, was atomare/nicht atomare bedeutet, was nicht dasselbe ist wie zu fragen, ob Sie jemals nichtatomare verwenden sollten. – JeremyP

Antwort

16

Eine kurze Antwort ist die Leistung. Wenn Sie Eigenschaften als atomic deklarieren, verwenden die synthetisierten Zugriffsmethoden Sperren, um sicherzustellen, dass Werte vollständig abgerufen und festgelegt werden. Wenn Sie dies nicht benötigen, z. B. wenn Ihre Anwendung ein Singlethread-Programm ist, führt dies zu einer Leistungseinbuße für diese Sperren, ohne dass ein Vorteil erzielt wird.

+6

Das Festlegen von Eigenschaften auf nicht atomisch ohne Profilierung gilt daher als vorzeitige Optimierung. – JeremyP

+1

Ich interessiere mich auch, wenn dies wirklich wichtig für die Leistung in der allgemeinen Anwendung sein kann, um diese Eigenschaft zu verwenden, ohne nichtatomare es ist nur lesbarer, ein unbenutztes Schlüsselwort frei ... – Renetik

Verwandte Themen