【发布时间】:2026-02-20 17:00:02
【问题描述】:
我想问一个关于表格视图和@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 对其进行了测试并且工作(我进行了测试并且行为符合预期)但我的客户在安装了 ios 3.x 的 3g 上对其进行了测试,它似乎不起作用。
我考虑过使用 GCD(通过在 dispatch_once() 中包含代码),但从 ios 4.x 开始支持它。
您知道为什么@synchronized 在我客户的手机上不起作用吗?
谢谢!
【问题讨论】:
标签: iphone ios synchronized didselectrowatindexpath uitableview