Используйте -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];
}
Я называю это, но ни один из них не выполняется. Нужно ли устанавливать делегирование, например, в textview, т. Е. [Self.textView setDelegate: self]? –
Возможно ли, что вы не определили эти методы в делетете приложения? Только те из них, которые реализуют протокол UIApplicationDelegate, получат эти сообщения. Этот класс также должен определить '-приложение: didFinishLaunchingWithOptions' и обычно имеет имя, которое заканчивается на' AppDelegate'. Это помогает? – vbwx