Выполнение блока внутри @synchronized
, кажется, сводит на нет блокировку.
- (void)method {
@synchronized(self) {
if(ivar == nil) {
ivar = [myBlock() retain];
}
}
}
Переменная экземпляра ivar
не записана ни в каком другом месте.
Я заметил, чтоблок myBlock
иногда выполняется в моем приложении дважды.
Как это может произойти?Как избежать этого и сделать реально работающую блокировку?