NSTimer будет вызывать ваш метод с регулярным интервалом - вы можете установить его до 1 секунды и уменьшать каждый тик.Или, чтобы быть более надежным, вы можете запускать его чаще и обрабатывать POSIX gettimeofday (), чтобы самостоятельно отслеживать время и вычислять оставшееся время
И да, такие вещи возможны.Для переключателей вы бы просто получили их состояние и действовали так, как вам нравится.Вы можете настроить их, чтобы они сообщали вам, когда они меняются, или когда вы выполняете указанное поведение, вы можете проверить их статус.