2012-03-23 3 views
0

Я пытаюсь сохранить свои данные при выходе или сведении к минимуму моего приложения, но похоже, что applicationwillenterbackground никогда не вызывается. Нужно ли мне делать что-то конкретное?ios applicationwillenterbackground не называется

Я установил <UIApplicationDelegate> в detailview.h класс, но все еще не повезло.

Кстати, я использую храмовое устройство Master-DetailView, если это так.

ответ

1

Используйте -applicationDidEnterBackground:, чтобы сохранить данные пользователя. Это также должно быть сделано в -applicationWillTerminate:, который может быть вызван, если батарея умрет, я думаю. См. Этот вопрос для получения дополнительной информации: ApplicationWillTerminate in iOS 4.0

Для моего приложения я подробно изучил эту проблему, и я узнал, что помимо реализации обоих вышеупомянутых методов мне пришлось проверить, поддерживает ли устройство многозадачность, иначе данные будут сохраняться дважды (например, на iPhone 3G). Итак, вот как выглядит эта часть моего кода:

- (void) applicationDidEnterBackground:(UIApplication*)application 
{ 
    // This is called on all iOS 4 devices, even when they don't support multi-tasking. 
    // But we want to avoid saving data twice, so we check. 
    if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)]) 
     [model serializeEntries]; 
} 

- (void) applicationWillTerminate:(UIApplication*)application 
{ 
    // This is always called on devices that don't support multi-tasking, 
    // but also in low-memory conditions and when the app has to be quit for some 
    // other reason. 
    [model serializeEntries]; 
} 
+0

Я называю это, но ни один из них не выполняется. Нужно ли устанавливать делегирование, например, в textview, т. Е. [Self.textView setDelegate: self]? –

+0

Возможно ли, что вы не определили эти методы в делетете приложения? Только те из них, которые реализуют протокол UIApplicationDelegate, получат эти сообщения. Этот класс также должен определить '-приложение: didFinishLaunchingWithOptions' и обычно имеет имя, которое заканчивается на' AppDelegate'. Это помогает? – vbwx