Your application cannot either create or explicitly manage
NSRun objects. Each
NSThread object—including the application’s main thread—has an
NSRun object automatically created for it as needed. If you need to access the current thread’s run loop, you do so with the class method
Note that from the perspective of
NSTimer objects are not "input"—they are a special type, and one of the things that means is that they do not cause the run loop to return when they fire.