Я инициализирую viewController, когда я получаю UIApplicationLaunchOptionsLocationKey в приложении didFinishLaunchingWithOptions? - PullRequest
7 голосов
/ 08 мая 2011

Я создаю приложение, которое прослушивает события значительного изменения местоположения, и в случае его закрытия iOS запускает приложение с набором UIApplicationLaunchOptionsLocationKey.

Итак, в документации говорится о создании нового менеджера расположенийи зарегистрируйтесь для обновления местоположения снова.Тем не менее, не упоминает, если я должен инициализировать мой viewController (как я делаю при обычном запуске приложения)?Мои контроллеры представления инициализируются в viewDidLoad, но создаются в appDidFinishLaunchingWithOptions.

Есть идеи, сколько времени ОС предоставляет приложению для обработки обновления местоположения?Мое приложение должно сделать запрос веб-службы, если изменение местоположения указывает на интересующее местоположение для приложения.

Спасибо

1 Ответ

8 голосов
/ 08 мая 2011

Вы должны рассмотреть вопрос о переносе кода инициализации в новый метод, например, 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;
    }
}
...