2011-05-08 4 views
7

중요한 위치 변경 이벤트를 수신하는 앱을 만들고 있습니다. 앱이 종료되면 iOS에서 UIApplicationLaunchOptionsLocationKey가 설정된 앱이 실행됩니다.didFinishLaunchingWithOptions 앱에서 UIApplicationLaunchOptionsLocationKey를받을 때 viewController를 초기화합니까?

문서에 새 위치 관리자를 만들고 위치 업데이트를 다시 등록하라는 메시지가 표시됩니다. 그러나, 내가 viewController를 초기화해야한다고 언급하지 않습니다 (정상적인 앱 시작에서도 마찬가지입니다). 내 View Controller는 viewDidLoad에서 초기화되지만 appDidFinishLaunchingWithOptions에서 생성됩니다.

OS가 위치 업데이트 처리를 위해 앱에 제공하는 시간은 어떻게됩니까? 위치 변경이 앱의 관심 위치를 나타내는 경우 내 앱에서 웹 서비스 요청을해야합니다.

감사

답변

8

당신은 initializeViews처럼, 새로운 방법으로 무언가를 초기화 코드를 이동하는 것이 좋습니다. 이 메소드는 뷰가 초기화되지 않았는지 확인한 다음 뷰를 초기화합니다. 이 메서드는 application:didFinishLaunchingWithOptions:applicationWillEnterForeground:에서 호출하지만 application:didFinishLaunchingWithOptions:의 호출은 응용 프로그램이 백그라운드로 이동하지 않는 경우에만 발생합니다.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    ... 
    if([UIApplication sharedApplication].applicationState != UIApplicationStateBackground) 
     [self initializeViews]; 
} 
- (void)applicationWillEnterForeground:(UIApplication *)application { 
    [self initializeViews]; 
} 
- (void)initializeViews { 
    if(!viewsAreInitialized) { 
     ... 
     viewsAreInitialized = YES; 
    } 
} 
+0

감사합니다. 배경 모드에서 초기화 할 것인지 확신 할 수 없었습니다. – Gary

+0

@Gary 초기화 할 수는 있지만, 사용하지 않을 때는 추가 시간이 걸리고, 백그라운드에서 열리면 아직 사용할지 알 수 없습니다. – ughoavgfhw

관련 문제