아래에 표시된대로 초기화 함수를 선언하는 클래스 A가 있습니다. AppDelegate applicationDidBecomeActive
에서 호출됩니다.위치 변경시 iOS 호출 함수가 예외를 throw 함
이제 응용 프로그램이 백그라운드로 이동하면 사용자의 현재 위치를 캡처하고 있습니다. 응용 프로그램이 포 그라운드로 오면 새 위치가 표시되고 사용자가 주어진 거리 이상으로 이동 한 경우 다시 초기화를 호출하여 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];
}
}
절대 '초기화'를하지 마십시오. 이것은 클래스에 대한 참조가 처음 존재할 때 런타임에 의해 호출 될 표준 Objective-C 메소드입니다. – rmaddy
감사합니다. 다시 계산을 다른 함수로 옮기고 그 함수를 호출하는 것으로 충분합니까? 아마도 – rkh
. 그러나 오류로 인해,'rootViewController'는 여러분이 생각하는 것과 다릅니다. 앱이 백그라운드에서로드 된 경우 'rootViewController'는 예상되는 nav 컨트롤러가 아닌 일부 개인 클래스입니다. – rmaddy