Encore is for queueing callbacks. It ensures that a single executor runs a block while other callbacks block.
+ (void)process:(void(^)(NSError *error))callback
{
static KSEncore *encore;
static dispatch_once_t token;
dispatch_once(&token, ^{ encore = [KSEncore new]; });
[encore queue:callback block:^{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// ...
dispatch_async(dispatch_get_main_queue(), ^{
[encore flush:^(void (^callback)(NSError *error)) {
callback(error);
}];
});
});
}];
}Encore is available through CocoaPods. To install it add the following line to your Podfile:
pod "KSEncore"Kevin Sylvestre, kevin@ksylvest.com
Encore is available under the MIT license. See the LICENSE file for more info.