반복되는 '이벤트'를 만드는 사용자를 기반으로 앱을 제작하고 있습니다. 각 Event 객체에는 하루 (typedef NS_ENUM으로 저장 됨)와 시간 (NSDate로 저장 됨) 및 지속 시간 (분을 나타내는 NSInteger)이 있습니다. 각 이벤트는 항상 매주 반복됩니다. 이벤트는 핵심 데이터 관리, 교차 장치 동기화, 데이터베이스에 저장됩니다. 매주 다시 만들 필요가 없도록 재사용 할 수 있도록 설계되었습니다 (따라서 날짜 평일 평일). 이벤트가 완료되면 일부 사용자 통계가 업데이트됩니다.특정 시간에 코드 실행
예를 들어, 월요일에 시작하여 10 분에 시작하여 25 분 동안 지속되는 이벤트를들 수 있습니다. 이 경우 NSDate
표현을 this Monday at 10:25
(문제가되지 않음)로 설정하고이 시점에서 문제가되는 사용자 통계를 업데이트하고 싶습니다.
특정 시간에 코드를 실행하는 가장 좋은 방법은 무엇입니까?
원래는 [[NSDate alloc] initWithFireDate:interval:target:selector:userInfo:repeats:]
을 사용하려고 생각했습니다. 그러나 target
개체가 초기화되었는지 확인하고 장치간에 타이머를 동기화하는 것은 어려울 수 있습니다. 즉, 각 타이머가 동시에 (매일, 시간 또는 기간 변경시) 발사되도록 설정되어 있는지 확인하십시오.
나의 두 번째 생각은 앱이 시작될 때 통계를 업데이트하고 현재 시스템 시간을 사용하고 이전 이벤트를 되돌아 보는 것입니다. 그러나 사용자가 앱을 연 상태라면 실시간으로 통계를 업데이트하고 싶습니다.
도움이나 아이디어를 많이 주시면 감사하겠습니다. 나는 또한이 문제를 더 잘 해결하기 위해 모델을 어떻게 바꿀 수 있을지에 대한 아이디어를 공개한다.
미리 감사드립니다.