应用程序未加载 - applicationDidBecomeActive

时间:2012-12-07 04:38:07

标签: objective-c ios xcode

我有一个iOS应用程序,一些客户说不会加载,他们无限期地看到一个微调器。此微调器在应用程序委托中启动。

如果我在applicationDidBecomeActive委托中放置一个断点然后让xcode运行,我终于能够重现这一点。这里有一个NSTimer被调用。

我想知道这是否是其他人看到过的,这个代表和NSTimers是否存在冲突?

编辑:内存中的代码示例。我将在稍后获得实际代码。

-(void)applicationDidBecomeActive:(UIApplication *)application {    
  [self toggleOpen];    
}

- (void)toggleOpen {      
  if (!self.timer) {
      self.timer = [NSTimer scheduledTimerWithTimeInterval:600 target:self selector:@selector(doWork) userInfo:nil repeats:YES];
  } else {
        [self.timer invalidate];
        self.timer = nil;
  }
}
- (void)doWork {
  //Under certain conditions calls a web service (rarely)
}

2 个答案:

答案 0 :(得分:1)

如果应用程序根本无法加载并且只是在启动时显示微调器,则不能因为计时器,因为它只计划在应用程序启动600秒后触发doWork方法变为活动状态,然后转到下一个命令。

但是,如果应用程序加载正常,然后在600秒后卡在doWork方法中,则可能是因为调用Web服务的方式(同步和异步调用)。

所以,就像其他人所说的那样,除非你展示更多代码,否则无济于事。

答案 1 :(得分:0)

似乎问题是关于在applicationDidBecomeActive中触发的NSTimer。这可能在运行循环可用之前创建了NSTimer。在applicationDidBecomeActive中注释掉NSTimer似乎已经修复了应用程序从不启动的问题。