objective-c – 使用核心数据和Grand Central Dispatch(GCD)优雅终止NSApplication

objective-c – 使用核心数据和Grand Central Dispatch(GCD)优雅终止NSApplication,第1张

概述我有一个 Cocoa应用程序(Mac OS X SDK 10.7),它通过Grand Central Dispatch(GCD)执行某些过程.这些进程以我认为是线程安全的方式 *** 作某些Core Data NSManagedObjects(非基于文档的)(创建一个新的managedObjectContext以供在此线程中使用). 我遇到的问题是当用户在调度队列仍在运行时尝试退出应用程序时. 在实际退出 我有一个 Cocoa应用程序(Mac OS X SDK 10.7),它通过Grand Central dispatch(GCD)执行某些过程.这些进程以我认为是线程安全的方式 *** 作某些Core Data NSManagedobjects(非基于文档的)(创建一个新的managedobjectContext以供在此线程中使用).

我遇到的问题是当用户在调度队列仍在运行时尝试退出应用程序时.

在实际退出之前调用NSApplication委托.

- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender

我收到错误“无法合并更改”.由于仍然通过不同的managedobjectContext执行 *** 作,因此有些预期.然后,我将从使用核心数据应用程序生成的模板中获取NSAlert.

在Threading Programming Guide中有一个名为“在退出时意识到线程行为”的部分,其中提到使用replyToApplicationShouldTerminate:方法.我在实现这个方面遇到了一些麻烦.

我想要的是我的应用程序完成处理排队的项目,然后终止而不向用户显示错误消息.更新视图或使用工作表让用户知道应用程序正在执行某些 *** 作并在 *** 作完成时终止也会很有帮助.

我将在何处以及如何实现此行为?

解:
所以我在这里遇到了一些不同的问题.

>我有一些块正在访问dispatch_queue中的核心数据,阻止我的应用程序正常终止.
>当我尝试向dispatch_queue添加新项时,在新线程上启动了dispatch_queue的新实例.

我要解决的问题是在我的AppDelegate中使用NSNotificationCenter(其中(NSApplicationTerminateReply)applicationShouldTerminate 总结

以上是内存溢出为你收集整理的objective-c – 使用核心数据和Grand Central Dispatch(GCD)优雅终止NSApplication全部内容,希望文章能够帮你解决objective-c – 使用核心数据和Grand Central Dispatch(GCD)优雅终止NSApplication所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1239443.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存