1

@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)ですか?

4

1 に答える 1