сбой dispatch_async только на устройстве iOS, почему?

Мое приложение падает в точке кода ниже. Это только на устройстве, над симулятором приложение работает нормально.

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
, ^(void) {

// do some time consuming things here
// perform task here which required to be run on separate thread/queue

CPPClass& ptr = CPPClass::GetInstance();
ptr.SyncTrackingData([newObject primaryID]);

dispatch_async(dispatch_get_main_queue(), ^{

// after completion of those thread tasks
// do some things here in the main queue
// for example: update UI controls, etc.

NSLog(@" Synchronization Done ");
});
});

Вот поток приложения для выполнения этого метода:

  • Получение данных в ответе JSON из веб-сервиса (с использованием libCurl)
  • Разбор данных и создание объектов модели
  • Как только объект модели создан, он также должен синхронизировать эти данные с локальной базой данных. Отсюда SyncTrackingData метод с параметром — который обрабатывает этот сценарий.

относительно SyncTrackingData Метод: этот метод доступен в файле класса CPP, он создает новый поток и использует этот поток, данные приложения сохраняются в локальном файле базы данных (в каталоге документов).

Мы используем отдельный поток для этого метода — потому что, поскольку у нас уже есть объекты Model, данные представления могут быть отображены, а заполнение базы данных может быть выполнено как фоновый процесс.

Есть догадки, в чем может быть причина.

0

Решение

Вы искали какие-либо предупреждения компилятора в вашем коде?

Если в этом коде нет предупреждений компилятора, я бы посыпал еще несколько операторов NSLog в разных точках кода. Затем запустите приложение на своем устройстве, пока устройство подключено к вашей машине, на которой запущен Xcode. Смотрите вывод консоли, когда приложение работает.

Кроме того, вы можете просматривать результаты консоли после того, как устройство подключено, просто откройте окно «Органайзер» и нажмите «Журналы устройств» для вашего устройства.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]