別のスレッドからのiPhone Gameloopレンダリングの更新
-
03-07-2019 - |
質問
私はiPhone開発の初心者です。次のようにゲームループを設定しています。
(void)CreateGameTick:(NSTimeInterval) in_time
{
[NSThread detachNewThreadSelector:@selector(GameTick) toTarget:self withObject:nil];
}
基本的なゲームのティック/レンダリングは次のようになります
(void)GameTick
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
CGRect wrect = [self bounds];
while( m_running )
{
[self drawRect: wrect];
}
[pool release];
}
レンダリング関数が呼び出されます。ただし、何も描画されません(Core Graphicsを使用して、派生UIViewに線を描画しています)。
タイマーを介して更新を呼び出すと、すべてがうまくいきます。
スレッド経由でレンダリングが失敗した理由を教えてください。そして、スレッド経由で動作させることは可能ですか?
ありがとう リッチ
解決
-drawRect:を直接呼び出すことはできません(できません)。代わりに、-setNeedsDisplayを使用してください。ビューはイベントループを介して次回更新されます。これを別のスレッドで実行している場合、performSelectorOnMainThread:を使用する必要がある場合があります。
所属していません StackOverflow