我将在这篇文章中尽可能多地介绍细节,因为我完成这项任务非常重要,我不知道为什么我会得到这些奇怪的结果。所以,它开始了。
我有5个视图控制器/.xib文件。我还有appdelegate和LocationManager单例类,旨在为每个.h/.m文件提供位置更新。视图控制器1,称为WelcomeView,是位置更新的代理。所以它有didUpdateLocations方法。它监视一个人进入特定的区域。当进入这个特定区域时,它会告诉这个人去另一个区域领取各种奖品。didUpdateLocations监控所有移动,包括监视人员进入1区和2区。如果人员成功进入区域1,则应将视图切换到TransitionViewController 3秒钟,然后切换到TimerViewController。这是我用来切换的代码:
self.transitionView = [[TransitionViewController alloc] initWithNibName:@"TransitionViewController" bundle:nil];
[self.view addSubview: self.transitionView.view];
然后在转换视图控制器中,我让它睡眠3秒,然后切换到timerviewcontroller,如下所示:
sleep(3);
self.timerView = [[TimerViewController alloc] initWithNibName:@"TimerViewController" bundle:nil];
[self.view addSubview:self.timerView.view];
当我真正进入这个地区,而这一切都应该发生时,起初它就像一种魅力。事实证明,只有当手机插入mac并从Xcode运行时,它才起作用。现在,我已经到了只需要45秒-1分钟就可以真正切换到转换的地步,然后在转换时,需要额外的20秒左右才能切换到计时器。我尝试过各种方法,比如将两个命令都放在主线程上,就像这样:
sleep(3);
[[NSOperationQueue mainQueue] addOperationWithBlock:^ {
NSLog(@"Finished sleeping; switching to timer now.\n");
self.timerView = [[TimerViewController alloc] initWithNibName:@"TimerViewController" bundle:nil];
[self.view addSubview:self.timerView.view];
}];
或者在后台线程上转换到定时器,如下所示:
[self performSelectorInBackground:@selector(transitionToTimer) withObject:nil];
我不知所措。我不知道为什么会发生这种事,而这项工作本应在上周完成。有什么建议吗?任何人
编辑
这是其中最奇怪的部分:如果我在1区内启动应用程序,它会完美地运行。这个应用程序完全按照它应该做的去做。当我走进热点时,它会崩溃,或者需要很长时间才能切换视图。因此,如果应用程序在手机上运行FROM Xcode,或者启动时我已经在热点中了,那么它运行得很好。如果我独立于xcode运行应用程序并进入热点,它会崩溃,或者需要60多秒才能切换视图。它意识到自己应该切换,只是在60多秒内不切换。