GestureRecognizer
?? multipart/form-data
. Он на самом деле нифига не простой. А Curl штука достаточно низкоуровневая. Она не умеет из коробки слать такие запросы. Либо используйте что-то типа Guzzle, либо отправляйте всё руками то, что требует multipart/form-data
. multipart/form-data
. У вас нет ни заголовка, ни boundary. И заголовок application/json, а не multipart/form-data.И вправду, почему это может быть...
Thread & Pthread
лучше не трогать ) Они для крайне специфичной работы. DispatchQueue.main
. Тут всё предельно ясно, на такую очередь кидают задания асинхронно, что бы не тормозить и не загружать лишней задачей DispatchQueue.main
. DispatchQueue.main
для того, что бы асинхронно добавить задачу в главный поток, составляют обычно задачи, кототрые напрямую используют UI, но при этом они достаточно долгие и могут притормозить ваш главный поток. pushViewController
отрабатывает достаточно быстро и результат её работы нужен тут же. Это всё равно, что пытаться открыть дверь и не дожидаясь её открытия Вы прёте в закрытую дверь. NSOperation
ещё более фундаментальная штука. Такие вещи нужно хорошо понимать, если вы хотите стать хорошим разработчиком. DispatchQueue.main.async
заставляет текущий поток не дожидаться работы функции pushViewController
. То есть вам нужно здесь и сейчас перейти на другой VC, а вы просто берете и добавляете к переходу ещё пару микросекунд/миллисекунд времени. Зачем стрелять себе в ногу я не понимаю.