Мое приложение падает в точке кода ниже. Это только на устройстве, над симулятором приложение работает нормально.
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 ");
});
});
Вот поток приложения для выполнения этого метода:
SyncTrackingData
метод с параметром — который обрабатывает этот сценарий.относительно SyncTrackingData
Метод: этот метод доступен в файле класса CPP, он создает новый поток и использует этот поток, данные приложения сохраняются в локальном файле базы данных (в каталоге документов).
Мы используем отдельный поток для этого метода — потому что, поскольку у нас уже есть объекты Model, данные представления могут быть отображены, а заполнение базы данных может быть выполнено как фоновый процесс.
Есть догадки, в чем может быть причина.
Вы искали какие-либо предупреждения компилятора в вашем коде?
Если в этом коде нет предупреждений компилятора, я бы посыпал еще несколько операторов NSLog в разных точках кода. Затем запустите приложение на своем устройстве, пока устройство подключено к вашей машине, на которой запущен Xcode. Смотрите вывод консоли, когда приложение работает.
Кроме того, вы можете просматривать результаты консоли после того, как устройство подключено, просто откройте окно «Органайзер» и нажмите «Журналы устройств» для вашего устройства.
Других решений пока нет …