   About Cocoa Game Loop...
  I've been mad with the Game Loop, if I just call a delay then the program won't respond to other inputs. Is it good to limit the fps with NSTimer in this way?-(void)Run{lastTime=CFAbsoluteTimeGetCurrent();[self GameLoop];game_LoopTimer = [NSTimer timerWithTimeInterval:(1.0f/1000.0f) target:self selector:@selector(GameLoop) userInfo:nil repeats:YES];[[NSRunLoop currentRunLoop] addTimer:game_LoopTimer forMode:NSDefaultRunLoopMode];[[NSRunLoop currentRunLoop] addTimer:game_LoopTimer forMode:NSEventTrackingRunLoopMode]; // ensure timer fires during resize}-(void)GameLoop{if([self isRunning]){CFTimeInterval timeInterval;currentTime=CFAbsoluteTimeGetCurrent();timeInterval=currentTime-lastTime;if(timeInterval>1.0/frameRate){printf("%d fps\n",(int)(1/timeInterval));[game_LoopTimer invalidate];lastTime=currentTime;[self Process];game_LoopTimer = [NSTimer timerWithTimeInterval:(1.0f/1000.0f) target:self selector:@selector(GameLoop) userInfo:nil repeats:YES];[[NSRunLoop currentRunLoop] addTimer:game_LoopTimer forMode:NSDefaultRunLoopMode];[[NSRunLoop currentRunLoop] addTimer:game_LoopTimer forMode:NSEventTrackingRunLoopMode]; // ensure timer fires during resize }}else {printf("The program will be shut down\n");[NSApp terminate:nil];}}PS:I'm not a native English speaker...beg you don't mind...   
  What kind of input is being ignored, and where are you handling your input? Also, what are you working on - a Mac or an iPod/iPhone?Either way, your GameLoop method contains some wrong logic. Let's say you set your desired framerate to 25, so each update should ideally take 0.04 seconds. Let's assume that each cycle takes 0.039 seconds - you never know, timers aren't that precise. The first call to GameLoop will give a timeInterval of 0.039 - so the inner part of the method is ignored. The next call results in a timeInterval of 0.078 seconds, which is more than 0.04, so the inner part is executed. You're setting lastTime to currentTime however, disregarding the 0.038 seconds that you're already past your desired update time. This will repeat over and over again, resulting in an actual framerate of roughly 13 fps.Your english isn't bad bytheway. :) Ni cong zhongguo ma?EDIT: Fix your timestep is a good article about timing issues. It's definitely worth reading. :)   ;  I presume your trying to build this for iphone. Your input delays are happening because your firing time for your update loop is too small, your trying to call it 1000 times a second, but this floods the message queue.This is good explanation and tips. but basically only call it 60 times a second at most. ;  Well, I program on Mac. And I'm in Singapore. :)I'm sorry that I made a mistake.The [self GameLoop] in function 'Run' should be deleted.It seems that this code works fine, but I don't know if it's good enough.The window can respond to other inputs.If I set frame rate to 30. Then it shows 29fps in the console.