- 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];
}
tirinox 19.01.2013 14:48 # −1
У нас в gamedeve популярно CACurrentMediaTime.
guest 19.01.2013 14:55 # +2
Иди на свой gamedev.ru
tirinox 19.01.2013 15:02 # −2
krypt 19.01.2013 15:01 # 0
Фризить основной поток нельзя (во-первых - плохой стиль, во-вторых - 5 секунд висящаябез реакции программа убивается операционкой). Так что таки, да, таймер. Но он тут через ТАКУЮ жопу используется....
Инициализация - через жопу. Использование = через жопу. Проверка остановки - через жопу. Хоть остановили его нормально, вроде. Хотя не исключено, что чего-то мы не знаем.
tyler 19.01.2013 15:37 # 0
krypt 19.01.2013 16:10 # 0
QuickNick 21.01.2013 08:36 # +1
bormand 21.01.2013 09:44 # 0
Боюсь, что если бы он вышел за пределы этих трех инструментов, вам разбираться в его коде было бы на порядок сложнее.
Безграмотный структурный код читать еще можно, а вот безграмотный код человека с ооп и паттернами головного мозга - очень напряжно.
P.S. А вообще - ему прямая дорога в динамически типизированные языки типа javascript.
QuickNick 21.01.2013 12:13 # 0
bormand 21.01.2013 12:32 # +1
Xtasy 21.01.2013 13:37 # 0
krypt 21.01.2013 14:56 # +1
bormand 21.01.2013 15:10 # 0
Да уж, андроид в этом плане оказался более продуманным. Исключение выдается при первом же обращении к UI из не UI потока.
QuickNick 21.01.2013 16:07 # 0
В библиотеке проверки лицензии почему-то коллбэки могут приходить в побочном треде. А я про это не знал. И показывал диалоги прямо из коллбэков проверки лицензии. При нажатии на Retry приложение крэшилось, потому что простановка текста на диалога происходила в другом треде.
absolut 21.01.2013 16:59 # 0
дотнет такой же подход исповедует
krypt 19.01.2013 16:18 # +1
tyler 19.01.2013 16:40 # 0
krypt 19.01.2013 17:23 # 0
krypt 19.01.2013 17:25 # 0
QuickNick 21.01.2013 08:32 # 0
krypt 21.01.2013 14:56 # −2
QuickNick 21.01.2013 16:19 # −1
roman-kashitsyn 19.01.2013 20:26 # +2
> scheduledTimerWithTimeInterval
я думал такие длинные имена только в тестах, построенных по bdd, встречаются. Это к вопросу о наименованиях... Ну невозможно же читать.
date_with_time_interval_since_now чуть лучше, но почему бы просто не давать имена покороче?...
krypt 19.01.2013 20:49 # +1
А спагетти-код? Не, не слышал :)
absolut 19.01.2013 20:49 # 0
0?
krypt 19.01.2013 20:50 # +1
tyler 19.01.2013 22:21 # +1
А вообще, XCode довольно неплохо ускоряет написание, на мой личный взгляд гораздо лучше VS.
krypt 19.01.2013 22:28 # 0
Хотя всё равно, приходится переодически лезть в хеадеры SDK и выдёргивать имена, потому что если ты забыл, как пишется "should" или вообще, с чего же там эта хрень начинается - автозавершение не поможет )
Xtasy 21.01.2013 13:42 # +1
QuickNick 21.01.2013 16:59 # 0
Из-за него у меня крайне подозрительное отношение к использованию этих классов.
krypt 22.01.2013 13:36 # 0