У меня есть приложение для iPhone, которое не полагается на UIKit каким-либо образом (оно не связано с UIKit). Это означает, что я не использую UIApplication и поэтому не звонил UIApplicationMain.NSTimer не работает без UIApplication?
Проблема в том, что когда я создаю таймер, он никогда не срабатывает. Таймер создается так:
[NSTimer timerWithTimeInterval:10 target:self selector:@selector(updateTime) userInfo:nil repeats:TRUE];
Я подозревал, что проблема может быть запущена петля, связанной, как после того, как я закончу основную инициализацию в «основных()», я делаю это:
NSLog(@"Starting application ...");
applicationInstance = [MyApp alloc];
[applicationInstance setMainLayer:mainLayer];
[NSThread detachNewThreadSelector:@selector(runApplication) toTarget:applicationInstance withObject:nil];
CFRunLoopRun();
Я обратил свое внимание на UIKit и заметил, что UIApplication выполняет гораздо больше, например, регистрацию для системных событий и т. Д. NSTimer может полагаться на одну из этих вещей. Другая вещь, которую я заметил, заключается в том, что в делегате UIApplication поток такой же, как и в main().
Как я могу получить NSTimer для правильной работы? Если это связано с циклом цикла, может кто-то указать на ошибку? "CFRunLoopRun()" используется, чтобы повесить основной поток, чтобы остальная часть приложения могла работать. Я не думаю, что это правда.
Редактировать: Я думаю, что цикл цикла должен быть сконфигурирован. Как-то ...
Так как я получить его на работу? Я действительно запутался прямо сейчас –
Вы ознакомились с руководством по программированию? Раздел «Использование циклов запуска»? Раньше я еще не создал свою собственную Run Loop, но мне кажется, что это хорошее место для начала! –
Да, да. Он не предоставил никакой информации :( –