- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- (void)countDown
{
NSDate *currentDate = [NSDate date];
NSTimeInterval timeInterval = ([currentDate timeIntervalSinceDate:startDate]);
NSDate *timerDate = [NSDate dateWithTimeIntervalSince1970:timeInterval];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"ss"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]];
NSString *timeString=[dateFormatter stringFromDate:timerDate];
if ([timeString isEqualToString:@"02"])
{
[logoTimer invalidate];
logoTimer = nil;
// some other code
}
}
- (void)updateCounter
{
startDate = [NSDate dateWithTimeIntervalSinceNow:00];
logoTimer = [NSTimer scheduledTimerWithTimeInterval:0.1
target:self
selector:@selector(countDown)
userInfo:nil
repeats:YES];
}
У нас в gamedeve популярно CACurrentMediaTime.
Иди на свой gamedev.ru
Фризить основной поток нельзя (во-первых - плохой стиль, во-вторых - 5 секунд висящаябез реакции программа убивается операционкой). Так что таки, да, таймер. Но он тут через ТАКУЮ жопу используется....
Инициализация - через жопу. Использование = через жопу. Проверка остановки - через жопу. Хоть остановили его нормально, вроде. Хотя не исключено, что чего-то мы не знаем.
Боюсь, что если бы он вышел за пределы этих трех инструментов, вам разбираться в его коде было бы на порядок сложнее.
Безграмотный структурный код читать еще можно, а вот безграмотный код человека с ооп и паттернами головного мозга - очень напряжно.
P.S. А вообще - ему прямая дорога в динамически типизированные языки типа javascript.
Да уж, андроид в этом плане оказался более продуманным. Исключение выдается при первом же обращении к UI из не UI потока.
В библиотеке проверки лицензии почему-то коллбэки могут приходить в побочном треде. А я про это не знал. И показывал диалоги прямо из коллбэков проверки лицензии. При нажатии на Retry приложение крэшилось, потому что простановка текста на диалога происходила в другом треде.
дотнет такой же подход исповедует
> scheduledTimerWithTimeInterval
я думал такие длинные имена только в тестах, построенных по bdd, встречаются. Это к вопросу о наименованиях... Ну невозможно же читать.
date_with_time_interval_since_now чуть лучше, но почему бы просто не давать имена покороче?...
А спагетти-код? Не, не слышал :)
0?
А вообще, XCode довольно неплохо ускоряет написание, на мой личный взгляд гораздо лучше VS.
Хотя всё равно, приходится переодически лезть в хеадеры SDK и выдёргивать имена, потому что если ты забыл, как пишется "should" или вообще, с чего же там эта хрень начинается - автозавершение не поможет )
Из-за него у меня крайне подозрительное отношение к использованию этих классов.