2016-10-26 7 views

答えて

4

スウィフトではnonatomicがデフォルトの(そして唯一の)選択肢なので、Objective-Cと異なり、必ずしも必要ではありません。atomicがデフォルトですが、しばしば望ましい動作ではありません。

スウィフトがなぜatomicを提供しないのかについては、言語設計者には必要な機能ではないと思います。もちろん、同期、ミューテックス、セマフォなどのアトミックプロパティを実装することもできます。これらのソリューションはより冗長ですが、Objective-Cのすべてのプロパティーをatomicにするのとは異なり、本当にスレッドセーフなクラスを作成することもできます。

+1

+1 _ "しかし、しばしば望ましい動作ではありません" _アトミックNSArray/NSDictionaryコードが何回も見られましたが、配列操作を守ると魔法のように期待されました –

+0

"アトミック"はあなたを守りません2つのスレッドが同時にプロパティを設定した場合、アトミックを使用するとクラッシュしませんが、何が起こるのかまだ分かりません。はい、あなたは@synchronized(または何らかの代替)とコードスレッドを安全にするために脳を使用する必要があります。 – gnasher729

関連する問題