在某些情況下,當某些事件快速連續接收到多個刷新調用時,例如: - ViewController接收到多個KVO通知。 - 從setters調用的Datamanger類在多個設置更改時進行刷新。排隊調用刷新數據的好方法是什麼?
理想情況下,我想只執行系列中的最後一次刷新調用(刪除所有中間調用)。
現在我使用的是isRefreshing屬性和needRefresh阻止過度的刷新,例如:
- (id)init {
...
[self observeValueForKeyPath:@"isRefreshing" ....];
}
- (void)setParameter:(NSInteger)parameter {
....
[self refresh];
}
/* and many more kinds of updates require a refresh */
- (void)setAnotherProperty:(NSArray*)array {
....
[self refresh];
}
- (void)refresh {
if (self.isRefreshing) {
self.needRefresh = YES;
return;
}
self.isRefreshing = YES;
...
self.isRefreshing = NO;
}
- observeValueForKeyPath..... {
if (!self.isRefreshing && self.needsRefresh) {
self.needsRefresh = NO;
[self refresh];
}
}
是否有這類問題的一個更好的解決辦法?
感謝您的答覆,但該方案丟棄在更新過程中收到的最後一個請求。但我現在正在使用調度塊。 –