Atomare :
Atomic garantiert, dass der Zugriff auf die Eigenschaft auf atomare Weise erfolgt. So wird z. B. immer ein vollständig initialisiertes Objekt zurückgegeben, und jedes Get/Set einer Eigenschaft auf einem Thread muss abgeschlossen sein, bevor ein anderer darauf zugreifen kann.
Wenn Sie sich vorstellen, dass die folgende Funktion auf zwei Threads gleichzeitig abläuft, können Sie sehen, warum die Ergebnisse nicht schön sind.
-(void) setName:(NSString*)string
{
if (name)
{
[name release];
// what happens if the second thread jumps in now !?
// name may be deleted, but our 'name' variable is still set!
name = nil;
}
...
}
Vorteile: Da jedes Mal vollständig initialisierte Objekte zurückgegeben werden, ist es die beste Wahl im Falle von Multithreading.
Nachteile: Leistungseinbußen, die Ausführung wird etwas langsamer
Nicht-Atomisch :
Im Gegensatz zu Atomic wird nicht jedes Mal ein vollständig initialisiertes Objekt zurückgegeben.
Vorteile: Äußerst schnelle Ausführung.
Nachteile: Wahrscheinlichkeit von Garbage Value im Falle von Multi-Threading.
4 Stimmen
developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/