私はそれを呼び出すたびに5秒の遅延を作る必要がある方法を持っています。最初に私はそれを作成しますsleep(5);
-それはうまく機能しましたが、私は信じています-それはobj-cの方法ではないので、GCDの助けを借りてそれを書き込もうとしました. このプロシージャの最初の呼び出しは約 5 秒の遅延を生じますが、このキュー内の他の呼び出しは遅延なく次々と実行されます。この問題を解決するには?
- (void) buyItemAtUUID:(NSString*)UUID
{
dispatch_barrier_async(dataManagerQueue, ^{
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
double delayInSeconds = 5.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dataManagerQueue, ^(void){
NSInteger path = [self indexFromObjectUUID:UUID];
if (path != NSNotFound)
{
NSMutableDictionary *item = [[_items objectAtIndex:path] mutableCopy];
NSNumber *value = [NSNumber numberWithFloat:[[item objectForKey:@"Quantity"] floatValue] - 1.0];
}
});
});
}