@synchronized(self)
ブロック内でやりたいとしましょう。これは保持サイクルにつながると思うので、通常は次のように書き直します。
-(void)myMethod
{
__weak TheClass * weakSelf = self;
dispatch_async(dispatch_get_main_queue(),
^{
TheClass * strongSelf = weakSelf;
if(strongSelf == nil)
{
return;
}
@synchronized(strongSelf)
{
//mutex code
}
}
}
私の質問は、@synchronized
このようにディレクティブを使用する場合、それは同等@synchronized(self)
ですか?