Use NSOperationQueue instead of NSRunLoop