2013-04-29 7 views
0

Это приложение предназначено для OSX. Я использую NSTimer для запуска метода в определенное время суток.initWithFireDate повторять каждый день

NSCalendar* myCalendar = [NSCalendar currentCalendar]; 
NSDateComponents* components = [myCalendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit 
              fromDate:[NSDate date]]; 
[components setHour:9]; 
[components setMinute:30]; 
[components setSecond:0]; 
NSDate *date = [myCalendar dateFromComponents:components]; 

NSTimer *t = [[NSTimer alloc] initWithFireDate:date 
             interval:0.0 
             target:self 
             selector:@selector(fired:) 
             userInfo:nil 
             repeats:NO]; 
[[NSRunLoop mainRunLoop] addTimer:t forMode:NSDefaultRunLoopMode]; 

Как я могу это повторять каждый день?

ответ

0
interval:86400 
repeats:YES 

Или

Добавить события в календарь пользователей с предупреждением

Или

Горный лев местных уведомлений http://www.renssies.nl/2012/02/mountain-lion-the-new-notifications-center/

+0

повторяет: ДА не использует дату, когда использует интервал времени. – Jonathan

+0

Извините, забыли добавить интервал. Если у вас есть дата и интервал огненного огня, он срабатывает первым при дате огня, а затем снова после интервала секунд. – Wain

+0

Хорошо, я даже не думал об установке интервала времени на день. Является ли этот поток безопасным и безопасным для памяти? – Jonathan

-1

NSTimer не подходит к тому, что вы хотите достичь!

Вместо этого ознакомьтесь с разделом EKReminder или NSUserNotification, которые были представлены в OS X 10.8.

Если вам нужно настроить таргетинг на более ранние версии ОС X, найдите другие параметры, включая EKCalendar, или рассмотрите другие службы, которые обрабатывают математику даты (IIRC, launchd имеет представление о времени суток, поэтому на некоторых других API высокого уровня).

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

+0

Я посмотрел на оба этих API, которые я бы хотел использовать. Проблема в том, что мне нужно это, чтобы работать на Snow Leopard и Lion. – Jonathan

+0

Некоторые API-интерфейсы, связанные с календарем, устарели с выпуском 10.8. Ищите их в Apple [_ «Библиотека устаревших документов»] (http://developer.apple.com/legacy/library/) _! – danyowdee