NSTimers actually just fire events periodically into the spanning NSRunLoop that each thread has (or should have). So, if you have a child (or background) process running in another thread, NSTimers will start this NSRunLoop thread instead of the main NSRunLoop application.
source share