2013-02-21 4 views
0

Я пишу простое приложение для mac osx, которое работает с системным временем для вычисления некоторых данных, я хочу запускать определенную процедуру каждый раз, когда часы доходят до 12:00.
Есть ли какая-либо система api для этого?
Как я это делаю?Как выполнить функцию в фиксированное время на mac os x?

на самом деле у меня есть бар элемент статуса в моем приложении, которые показывают текущий день в месяц в любом выбранном календаре как григорианский и исламская, и я хочу, чтобы это значение будет синхронизироваться с системным временем

+0

А что произойдет, если ваше приложение не работает в 12:00? – trojanfoe

+0

, если это приложение отображает неправильные данные в строке состояния mac – Farnabaz

+2

Что делать, если 12:00 не существует в этот день или существует дважды? (В Бразилии это происходит из-за летнего времени) –

ответ

-1

Если процедура является метод - routine:(NSTimer *)timer из object:

NSTimeInterval now = [NSDate timeIntervalSinceReferenceDate]; // Current time 
NSTimeInterval then = ((int)now + 86400) % 86400; // Next 12am 
NSDate *date = [NSDate dateWithTimeIntervalSinceReferenceDate:then]; 
NSTimer *timer = [[NSTimer alloc] initWithFireDate:date interval:86400 target:object @selector(routine:) userInfo:nil repeats:YES]; 
[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes]; 
+1

Это не сработает. Не все дни имеют 86400 секунд. –