@atomic
wird Ihnen garantieren, dass der Wert, den Sie erhalten, kein Kauderwelsch ist. Eine mögliche Situation besteht darin, einen gegebenen Wert von einem Thread zu lesen und seinen Wert von einem anderen zu setzen. Dann stellt das Schlüsselwort @atomic
sicher, dass Sie einen ganzen Wert erhalten. Wichtig ist, dass der Wert, den Sie erhalten, nicht der zuletzt eingestellte ist.
Der zweite Teil der Ihre Frage, über den Anwendungsfall ist rein umständlich, abhängig von der Umsetzung der Absichten. Wenn Sie z. B. jede Sekunde eine Art zeitbasiertes Update auf einer Liste haben, können Sie atomare verwenden, um sicherzustellen, dass Sie ganze Werte erhalten, und der Timer, der Ihre Liste aktualisiert, kann sicherstellen, dass Sie die neuesten Daten auf dem Bildschirm haben oder unter der Haube in irgendeiner impliziten Logik.
EDIT: Nach einer Bemerkung von @Rob sah ich die Notwendigkeit, den letzten Teil meiner Antwort zu paraphrasieren. In den meisten Fällen ist atomic
nicht genug, um die Arbeit zu erledigen. Und es gibt eine bessere Lösung, wie @synchronized
.
Wenn Sie '@ atomic' sagen, meinen Sie, eine atomare Eigenschaft zu deklarieren (z. B.' @property (atomic, strong) NSString * string; ')? – Rob
@Rob Ja, ich meine das. – tofucodes