UIKitにまったく依存しないカスタムiPhoneアプリケーションがあります(UIKitにリンクされていません)。これは、UIApplicationを使用していないため、 UIApplicationMainを呼び出していないことを意味します。
問題は、タイマーを作成しても起動しないことです。タイマーは次のように作成されます。
[NSTimer timerWithTimeInterval:10 target:self selector:@selector(updateTime) userInfo:nil repeats:TRUE];
「 main()」で基本的な初期化を完了した後、次のように実行すると、問題が実行ループに関連している可能性があると思われます。
NSLog(@"Starting application ...");
applicationInstance = [MyApp alloc];
[applicationInstance setMainLayer:mainLayer];
[NSThread detachNewThreadSelector:@selector(runApplication) toTarget:applicationInstance withObject:nil];
CFRunLoopRun();
UIKitをリバースエンジニアリングしたところ、UIApplicationがシステムイベントの登録など、はるかに多くのことを実行していることに気付きました。NSTimerはそれらの1つに依存している可能性があります。私が気付いたもう1つのことは、UIApplicationのデリゲートでは、スレッドがmain()と同じであるということです。
NSTimerを正しく動作させるにはどうすればよいですか?実行ループに関連している場合、誰かがエラーを指摘できますか?「CFRunLoopRun()」は、アプリケーションの残りの部分を実行できるようにメインスレッドを切断するために使用されます。私はそれが正しいとは思いません。
編集:実行ループを構成する必要があると思います。何とかして ...