[解決済み] objective Cのシングルトンメソッドである@synchronized()は何をするのか?
2023-04-06 14:20:27
質問
シングルトン・メソッドを作成したのですが、このメソッドに含まれる関数
@synchronized()
という関数が何をするのか知りたいのですが、よく使うので意味がわかりません。
どのように解決するのですか?
これは
クリティカルセクション
をコードブロックの周囲に宣言します。マルチスレッドコードでは
@synchronized
は、ブロック内のコードを実行できるのは常に1つのスレッドだけであることを保証しています。
もし、これが何をするものかを知らないのであれば、あなたのアプリケーションはおそらくマルチスレッドではなく、これを使う必要はないでしょう(特にシングルトン自体がスレッドセーフでない場合)。
編集します。 2011年からの元の回答になかったいくつかの情報を追加しました。
その
@synchronized
ディレクティブ
で保護されているコードの領域に複数のスレッドが入ることを防ぎます。
@synchronized
ディレクティブ
同じオブジェクトを参照する
. に渡されたオブジェクトは
@synchronized
ディレクティブに渡されるオブジェクトは "lock." として使用されるオブジェクトです。異なるオブジェクトがロックとして使用される場合、2 つのスレッドはコードの同じ保護領域にいることができ、ロックとして同じオブジェクトを使用してコードの 2 つの完全に異なる領域を保護することもできます。
また、もしあなたがたまたま
nil
をロックオブジェクトとして渡した場合、ロックは全く行われません。
関連
-
[解決済み】Xcode - 'NSUnknownKeyException', reason: ... this class is not key value coding-compliant for the key X" エラーの修正方法とは?
-
[解決済み] Objective-Cの定数
-
[解決済み] Objective-Cで乱数を発生させる
-
[解決済み] キーボードがあるときに、UITextFieldを編集開始時に上に移動させるには?
-
[解決済み] iOSまたはmacOSで、インターネット接続が有効かどうかを確認するにはどうすればよいですか?
-
[解決済み] カスタムオブジェクトを含むNSMutableArrayをソートするにはどうすればよいですか?
-
[解決済み] performSelectorのセレクタが不明なため、リークが発生する可能性があります。
-
[解決済み] iOSのバージョンを確認する方法を教えてください。
-
[解決済み] iOSの合成されたプロパティの名前を、先頭のアンダースコアで変更するのはなぜですか?重複
-
[解決済み] Objective-CでNSArrayを新しいNSArrayにフィルタリングする。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Objective-Cで@synchronizedのロック/アンロックはどのように行われるのですか?
-
[解決済み] RootViewControllerのスイッチングアニメーション
-
[解決済み] Objective-CでNSArrayを新しいNSArrayにフィルタリングする。
-
[解決済み] NSObject +loadと+initialize - これらは何をするのですか?
-
[解決済み] ARCで__autoreleasing ownership修飾子を記述する必要があるのは、どのような場合ですか?
-
[解決済み] NSArrayのディープコピー
-
[解決済み] Xcodeがシステムキーチェーンを使用するためにパスワードを要求し続ける
-
[解決済み] Objective-Cでオブジェクトのプロパティリストを取得する
-
[解決済み] Xcodeの "unused variable "の警告を消すにはどうしたらいいですか?
-
[解決済み] Category is implementing method which will be implemented by its primary class" の警告を抑制する。