首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@synchronization,但只有一次

@synchronization,但只有一次
EN

Stack Overflow用户
提问于 2015-06-02 02:06:35
回答 1查看 54关注 0票数 0

我有一种情况,多个网络调用同时运行可能会同时遇到相同的错误。当错误发生时,我希望网络调用为不同的身份验证数据执行一个单独的请求。

我遇到的情况是,所有网络调用都将遇到相同的错误,并且auth data请求的代码将执行四次。我只想让它运行一次。

所以我创建了这个方法,它由一个NSNotification触发。

代码语言:javascript
复制
static NSNumber *skipRefresh; 
@synchronized(skipRefresh) {
  if (!skipRefresh.boolValue) {
    skipRefresh = @(YES);
    [self refresh:^{
      //Do stuff
      skipRefresh = @(NO);
    } failure:^{
      //Do stuff
      skipRefresh = @(NO);
    }
  }
}

我假设这段代码不会工作,或者在最坏的情况下,我会遇到最终的竞争条件。

如果我只运行一次代码,而不是按顺序运行,我将如何实现我正在寻找的东西?

EN

回答 1

Stack Overflow用户

发布于 2015-06-02 02:13:49

您可以将其放在dispatch_once块中。

代码语言:javascript
复制
static dispatch_once_t onceToken;
                dispatch_once(&onceToken, ^{
                  //Do stuff once here per app launch
                });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30580247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档