我想在游戏中创建两个主题。一个线程用于定时器,另一个用于触摸事件。因为当我在iPhone上运行游戏时,不会报告与触摸事件和触摸事件的计时器冲突。它在模拟器中运行顺畅但在iPhone或iPod Touch上变得非常慢。所以我正在为触摸事件和计时器使用单独的线程。
当我使用[NSThread sleepForTimeInterval:0.01]
时,它会使所有线程都处于休眠状态。我的意思是触摸事件也停止通过。我想只停止计时器线程。
这是我的代码:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
BOOL Done = NO;
while (!Done)
{
NSAutoreleasePool *loopPool = [[NSAutoreleasePool alloc] init];
[NSThread sleepForTimeInterval:0.01];
[self performSelectorOnMainThread:@selector(callTapCode) withObject:tapView waitUntilDone:YES];
//performSelectorOnMainThread:@selector(callTapCode) withObject:nil waitUntilDone:YES];
[loopPool release];
Done=YES;
}
[pool drain];
}
答案 0 :(得分:1)
如果您正在尝试创建一个计时器,您应该只使用NSTimer
,因为这比创建一个线程更简单,更有效,只是为了经常发送“go”事件。
编辑:因为你没有创建第二个,你只是通过在循环中调用[NSThread sleepForTimeInterval:0.01]来停止主线程。这意味着你的主线程不再运行事件循环,这可能导致各种事情不再起作用。
答案 1 :(得分:0)
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.01]];