我的应用程序在以下代码点崩溃。仅在设备上,在模拟器应用程序上工作正常。
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 ");
});
});
这是此方法执行的应用程序流程:
- 从 Web 服务获取 JSON 响应中的数据(使用 libCurl)
- 解析数据和创建模型对象
- 创建模型对象后,还需要将该数据同步到本地数据库。因此,
SyncTrackingData
使用参数调用方法 - 处理该场景。
关于SyncTrackingData
方法:此方法在 CPP 类文件中可用,它在那里创建新线程并使用该线程,应用程序数据被存储到本地数据库文件(在文档目录中)。
我们为这个方法使用了单独的线程——因为我们已经有了模型对象,可以显示视图数据,并且可以作为后台进程完成数据库填充。
任何猜测可能是什么原因。