gpt4 book ai didi

c++ - dispatch_async 仅在 iOS 设备上崩溃,为什么?

转载 作者:行者123 更新时间:2023-11-28 07:31:32 28 4
gpt4 key购买 nike

我的应用程序在以下代码点崩溃。只有在设备上,模拟器应用程序才能正常工作。

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 对象,可以显示 View 数据并且可以作为后台进程完成数据库填充。

任何猜测可能是什么原因。

最佳答案

您是否在您的代码中查找过任何编译器警告?

如果该代码没有编译器警告,我会在代码的不同位置添加更多 NSLog 语句。然后在设备连接到运行 Xcode 的机器时在设备上运行该应用程序。在应用运行时观察控制台输出。

此外,您还可以在事后查看控制台输出——连接设备后,只需调出管理器窗口并单击设备的“设备日志”即可。

关于c++ - dispatch_async 仅在 iOS 设备上崩溃,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17595571/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com