Я хотел бы задать вопрос о табличном представлении и @synchronized
контракте.Я должен выполнить код внутри didSelectRowAtIndexPath
один раз, даже если пользователь продолжает нажимать на ячейку таблицы ...
У меня есть таблица, используемая в качестве меню в игре.Я хотел бы предоставить синхронизированный доступ к логике, реализованной в didSelectRowAtIndexPath
.
. Я использую следующий код:
//condition = YES in init code
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
@synchronized( self)
{
if( !condition)
{
NSLog(@"multiple execution is not allowed...");
return;
}
condition = NO;
...
//code
...
}
}
Я протестировал его на своем ipone 3gs с ios 4.3.4и работал (я сделал тесты, и поведение такое, как и ожидалось), но мой клиент проверил его на своем 3g с установленным ios 3.x, и, кажется, не работает.
Я думал об использовании GCD (путем включения кода вdispatch_once()
), но поддерживается начиная с ios 4.x.
Есть ли у вас какие-либо сведения о том, почему @synchronized
не работает на телефоне моего клиента?
Спасибо!