Вы делаете это в потоке, который не имеет NSRunLopp , потому что именно NSRunLoop не только отвечает за обработку входных данных, но и отвечает за выполнение синхронизированных действий .
Также возможно, что у вас NSRunLoop нет возможности ждать ввода и запускать синхронизированные события, если у вас есть какой-то код, который выполняется в течение длительного времени, прежде чем вернуться к вашему NSRunLoop тогда ваш NSRunLoop не получит изменения, чтобы что-либо сделать до тех пор.
Другая возможность, если вы настроили NSRunLoop странным образом, вам, возможно, придется использовать
- [NSObject performSelector:(SEL)aSelector
withObject:(id)anArgument
afterDelay:(NSTimeInterval)delay
inModes:(NSArray *)modes];
вместо этого и попробуйте другой режим, отличный от режима по умолчанию для строки ( NSDefaultRunLoopMode ).