В зависимости от того, что происходит при срабатывании таймеров, вы можете настроить локальное уведомление , которое будет срабатывать одновременно с таймером; это полезно, когда таймер предоставит пользователю что-то для действия. Что касается сохранения переменных, вы захотите использовать -applicationDidEnterBackground: чтобы сохранить любое нужное вам состояние, чтобы можно было загружать / генерировать правильные переменные при повторном запуске приложения (что может не произойти, пока приложение не будет завершено и полностью перезапущен снова).
Типы задач, которым разрешено выполнять длительные фоновые задачи, довольно ограничены, особенно для таких вещей, как GPS и воспроизведение звука. Все остальное необходимо решить для каждой задачи в отдельности, следует ли имитировать продолжение работы (например, переключение таймера на локальное уведомление), приостановку и сохранение необходимого состояния для продолжения при следующем запуске приложения, просто отменив задачу и изящный перезапуск / уведомление пользователя о возобновлении работы приложения или запрос конечного промежутка времени для завершения задачи (для таких вещей, как завершение загрузки).