In Objective-C wird zwischen atomaren und nichtatomaren Eigenschaften unterschieden:
@property (nonatomic, strong) NSObject *nonatomicObject;
@property (atomic, strong) NSObject *atomicObject;
Nach meinem Verständnis können Sie Eigenschaften, die als atomar definiert sind, sicher aus mehreren Threads lesen und schreiben, während das gleichzeitige Schreiben und Zugreifen auf nichtatomare Eigenschaften oder ivars aus mehreren Threads zu undefiniertem Verhalten führen kann, einschließlich fehlerhafter Zugriffsfehler.
Wenn Sie also eine Variable wie diese in Swift haben:
var object: NSObject
Kann ich diese Variable sicher parallel lesen und schreiben? (Ohne die tatsächliche Bedeutung zu berücksichtigen).
atomices im Allgemeinen nicht als ausreichend für eine thread-sichere Interaktion mit einer Eigenschaft angesehen, außer für einfache Datentypen. Bei Objekten wird der Zugriff über Threads im Allgemeinen mithilfe von Sperren (z. B. NSLockoder @synchronized) oder GCD-Warteschlangen (z. B. serielle Warteschlange oder gleichzeitige Warteschlange mit dem Muster "Leser-Schreiber") synchronisiert .
atomicdie Fadensicherheit für Objekte nicht gewährleistet; und (b) wenn man eine der oben genannten Synchronisationstechniken richtig verwendet, um die Thread-Sicherheit zu gewährleisten (unter anderem um gleichzeitiges Lesen / Schreiben zu verhindern), ist das atomare Problem umstritten. Aber wir brauchen / wollen es immer noch für einfache Datentypen, bei denen es atomiceinen echten Wert hat. Gute Frage!

@atomicoder verwenden@nonatomic. oder standardmäßig nur atomar. (Swift ist so unvollständig, wir können jetzt nicht viel sagen)