我有一种情况,多个网络调用同时运行可能会同时遇到相同的错误。当错误发生时,我希望网络调用为不同的身份验证数据执行一个单独的请求。
我遇到的情况是,所有网络调用都将遇到相同的错误,并且auth data请求的代码将执行四次。我只想让它运行一次。
所以我创建了这个方法,它由一个NSNotification触发。
static NSNumber *skipRefresh;
@synchronized(skipRefresh) {
if (!skipRefresh.boolValue) {
skipRefresh = @(YES);
[self refresh:^{
//Do stuff
skipRefresh = @(NO);
} failure:^{
//Do stuff
skipRefresh = @(NO);
}
}
}我假设这段代码不会工作,或者在最坏的情况下,我会遇到最终的竞争条件。
如果我只运行一次代码,而不是按顺序运行,我将如何实现我正在寻找的东西?
发布于 2015-06-02 02:13:49
您可以将其放在dispatch_once块中。
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
//Do stuff once here per app launch
});https://stackoverflow.com/questions/30580247
复制相似问题