静的メソッドで@synchronized
-
16-09-2019 - |
質問
のObjective-Cでは、あなたは@synchronized
構文を使用して、いくつかのオブジェクトに同期化されているように、ブロックを宣言することができます。それは次のようになります:
@synchronized (self) {
// Do something useful
}
しかし、私はあなたの静的メソッド(代わりにself
の+
)を持っているときに正確-
が参照しているものを興味があります。私は、Appleのドキュメントを見てみました、そして、彼らはそれがOKであることにほのめかすが、実際にそれを説明していません。私はそれが何を意味するのか興味があるだけだ、それが動作する知っています。
解決
クラス(静的)メソッドの内部self
は、クラスオブジェクトを参照します。
他のヒント
Objective-Cのself
では、コンテキストによって決定されます。インスタンスメソッドでは、そのインスタンスが呼び出されるであろう。静的な方法では、クラスオブジェクト自体(インスタンスメソッドで[self class]
のすなわち結果)であろう
は、上記の回答では、単に、あるスレッドが@synchronized(自己)を使用してインスタンスメソッドを呼び出し、別のスレッドが@synchronized(自己)を使用してクラスのメソッドを呼び出す場合、何の同期が2回の呼び出しの間起こらないことに注意してください彼らは同期のためにさまざまなオブジェクトを使用しているため。
所属していません StackOverflow