新しいアウトレットを Interface Builder からインターフェース (ヘッダー) ファイルにドラッグすると、Xcode 4.6 が自動的にプロパティを作成します...
iOS (Cocoa Touch) では、次のようになります。
@property (weak, nonatomic) SomeClass *someProperty; //nonatomic accessors
一方、OS X (Cocoa) では次のようになります。
@property (weak) SomeClass *someProperty; //atomic accessors (implicitly)
なんで?
編集:アトミックが何をするかしないかについて尋ねているのではありません。同期ディレクティブと、セッターとゲッターのアトミック性を保証する基礎となるミューテックス(またはロックなど)をよく知っています。UIKit はスレッド セーフではないため、iOS ではアクセサーは非アトミックであることを私は知っています。したがって、アクセサーをアトミックにすることで得られるものは何もありません。プロセッサー時間とバッテリー寿命を浪費するだけです。ここではデフォルトのケースについて話しています。自分が何をしているのかを知っているプログラマーは、いつアクセサーをアトミックにする必要があるかを知っています。
だから私は、OS X でデフォルトでアトミックになっている理由を尋ねています。私は、Appkit もスレッドセーフではないという印象を受けました。また、アトミック アクセサーを使用してもスレッド セーフが保証されるわけではありません。初心者のプログラマーにスレッド セーフの錯覚を与えたり、クラッシュを延期することで同時実行アプリでのバグ追跡を困難にしたりするという点で、反対の方向に進んでいるとさえ言えます。そうすることで、それらを追跡するのが難しくなります。また、デスクトップ コンピュータが比較的強力だからといって、リソースを浪費する必要があるわけではありません (ここで時期尚早の最適化について話しているわけではないことに注意してください)。Apple のエンジニアが合理的なプログラマーであることは当然のことなので、彼らには十分な理由があるはずです。プロパティがデフォルトでアトミックアクセサーを合成するようにすることにしました。