3
swatには非原子的なキーワードはありません。原子と非原子のコンセプトが迅速に削除された理由
swatには非原子的なキーワードはありません。原子と非原子のコンセプトが迅速に削除された理由
スウィフトではnonatomic
がデフォルトの(そして唯一の)選択肢なので、Objective-Cと異なり、必ずしも必要ではありません。atomic
がデフォルトですが、しばしば望ましい動作ではありません。
スウィフトがなぜatomic
を提供しないのかについては、言語設計者には必要な機能ではないと思います。もちろん、同期、ミューテックス、セマフォなどのアトミックプロパティを実装することもできます。これらのソリューションはより冗長ですが、Objective-Cのすべてのプロパティーをatomic
にするのとは異なり、本当にスレッドセーフなクラスを作成することもできます。
+1 _ "しかし、しばしば望ましい動作ではありません" _アトミックNSArray/NSDictionaryコードが何回も見られましたが、配列操作を守ると魔法のように期待されました –
"アトミック"はあなたを守りません2つのスレッドが同時にプロパティを設定した場合、アトミックを使用するとクラッシュしませんが、何が起こるのかまだ分かりません。はい、あなたは@synchronized(または何らかの代替)とコードスレッドを安全にするために脳を使用する必要があります。 – gnasher729