【发布时间】:2014-06-13 23:31:57
【问题描述】:
我有一堆 UISwitch 的视图。
我的问题是,当我点击一个开关时,我需要等待大约 10 秒才能点击视图的任何其他开关。
这是我的代码:
-(void) didTapSwitch:(UISwitch *)sender
{
NSLog(@"BEGIN didTapSwitch, %@",sender);
DADudesManager *dudesManager = [DADudesManager getInstance];
DADude *updatedDude = [dudesManager.dudesList objectAtIndex:[[self.spendingDudesTableView indexPathForCell:sender.superview.superview] row]];
DAAccountManager *accountManager = [DAAccountManager getInstance];
[accountManager.accountsOperationQueue addOperationWithBlock:^{
NSLog(@"BACKGROUND OPERATION BEGINS switchDudeBeneficiates, %@",sender);
DASpendingsManager *spendingsManager = [DASpendingsManager getInstance];
[[spendingsManager.spendingObserver childByAppendingPath:self.spending.spendingID] updateChildValues:@{updatedDude.dudeName: [sender isOn] ? @"1" : @"0"}];
NSLog(@"BACKGROUND OPERATION ENDS switchDudeBeneficiates, %@",sender);
}];
NSLog(@"END switchDudeBeneficiates, %@",sender);
}
我的spendingObserver是之前发起的一个Firebase对象。
执行上述代码时,NSLogs 几乎会立即显示在控制台中,同时在线更新数据,但开关在接下来的 9 到 11 秒内对任何点击都没有反应。
当然,注释[[spendingsManager.spendingObserver childByAppendingPath:self.spending.spendingID] updateChildValues:@{weakDude.dudeName: [weakSwitch isOn] ? @"1" : @"0"}]; 行会消除延迟,所以问题一定来自 Firebase,但我不知道发生了什么。
我可能缺少一些明显的东西,因为我对 IOS 开发还很陌生!
【问题讨论】:
-
这里没有足够的代码来重现错误。这将 Firebase 称为问题,但我看不到有关如何使用 Firebase 的足够上下文来了解它的使用位置和方式。可能需要一个简单的复制来提供帮助。
标签: ios objective-c uiswitch