iOS调用函数在位置更改时抛出异常

时间:2014-03-01 23:22:21

标签: ios

我有一个A类声明了一个初始化函数,如下所示。这是从AppDelegate applicationDidBecomeActive调用的。

现在,当应用程序进入后台时,我正在捕获用户的当前位置。当应用程序到达前台时,我获得新位置,如果用户移动了超过给定距离,我想再次调用初始化,弹出mainviewcontroller并重新计算数据。

我在第mvc = ...行中遇到异常。如果我将“应用程序不在后台运行”设置为YES,则初始化将被调用而没有问题(如果我根据距离删除调用初始化)。任何帮助将不胜感激!

例外是:

[_UIModalItemAppViewController viewControllers]: unrecognized selector sent to instance

我有:

....
UINavigationController *n ;
MainViewController *mvc;
....
....

+(void)refetch
{

static BOOL initialized = NO;
 n = (UINavigationController *)[UIApplication sharedApplication].keyWindow.rootViewController;
 mvc = (MainViewController *)[n viewControllers][0];

if (!initialized)
{
    initialized = YES;
    calculatedValuesArray = [[NSMutableArray alloc] init];
    [self updateLocation];
    [self fetchData];
}
}

2 个答案:

答案 0 :(得分:1)

似乎keyWindow不是您期望的窗口,它包含私有视图层次结构。请尝试使用app delegate的窗口:[UIApplication sharedApplication].delegate.window

答案 1 :(得分:-1)

问题出在这里:

n = (UINavigationController *)[UIApplication sharedApplication].keyWindow.rootViewController;
 mvc = (MainViewController *)[n viewControllers][0];

变量n没有ivar viewControllers