Проблема здесь в том, что -tableView:acceptDrop:row:dropOperation:
необходимо вернуть до того, как цикл выполнения заменит модальное окно. К сожалению, независимо от того, какой метод вы используете для установки модального режима, он будет изменять цикл выполнения до тех пор, пока модальный режим не исчезнет, что означает, что система будет думать, что вы все еще не разрешили сброс. В конце концов, время истечет, и падение вернется (это то, что вы видите).
Один из способов решения этой проблемы - отправить себе сообщение, чтобы вскоре открыть окно, но не в этом цикле выполнения (используя -performSelector:withObject:afterDelay:
). Так как вы уже находитесь в главном потоке, он запланирует обратный вызов после запрошенной задержки, используя таймер в основном потоке, что позволит вам ответить.