Как решить проблему взаимоблокировки в основной очереди iOS во время обработки квитанции - PullRequest
0 голосов
/ 30 сентября 2019

Я сталкиваюсь с странной проблемой, когда основная очередь каким-то образом блокируется, когда я получаю доступ к квитанции на устройстве. Я предполагаю, что это тупик, но не совсем уверен.

Вот трассировка стека:

enter image description here

Выполнение в основном останавливается на этомточка и пользовательский интерфейс также заморожен. Тот факт, что это происходит во время Bundle.main.appStoreReceiptURL, заставляет меня думать, что существует проблема при доступе к URL-адресу квитанции.

Я имею в виду два возможных сценария:

  • SKReceiptRefreshRequest иприведенный выше код каким-то образом создает тупик, пытаясь одновременно получить доступ / записать квитанцию ​​в главной очереди.
  • У меня возникла какая-то проблема, связанная с планированием очереди / потока, в моем собственном коде Reactive. Почти все операции выполняются в главном потоке, поэтому не уверен, что смогу создать этот тупик.

Если кто-нибудь сталкивался с подобной проблемой, было бы здорово узнать больше. LS Bundle proxy for current process не дает слишком много информации. Кроме того, psynch_rw_wrlock - подсказка, но я не смог ее использовать.

...