是否可以多次调用包含繁重操作的操作?像保存按钮(我保存第一个对象)并想添加其他对象,但应用程序变得如此缓慢,我无法导航到其他视图
问问题
96 次
2 回答
1
您需要确保您没有占用应用程序的主 UI 线程。一个潜在的简单解决方法是在不同的线程上执行保存操作。以下是如何使用 Grand Central Dispatch 执行此操作的示例:iPhone - Grand Central Dispatch 主线程
例子:
//notice this saveQueue is a new dispatch queue that's been created.
dispatch_queue_t saveQueue = dispatch_queue_create("com.mycompany.myqueue", 0);
dispatch_async(saveQueue, ^{
//this command represents your long running operation
doSaveOperation();
dispatch_async(dispatch_get_main_queue(), ^{
//always update your UI on the main thread!
[self showCompleteMessage];
});
});
于 2013-08-06T17:30:16.843 回答
1
您始终可以在后台处理繁重的数据保存相关任务。您可以将与内容相关的内容分发到各种线程(队列),您需要分离正在保存的内容,如果它阻塞了您的 UI 并使您的应用程序变慢,那么您需要在后台执行这些繁重的操作。
确保您不在后台执行任何 UI 更新操作。尝试阅读 GCD(它是如何工作的)、如何创建后台队列等以及如何使用它。我假设您可能正在使用核心数据来保存保存按钮上的内容。尝试阅读有关父/子管理上下文对象的信息。尝试一下,将繁重的任务移至后台,UI 的更新将始终在 Main 或 UI 线程上(如果您正在使用调度队列,您始终可以通过调用 get_main_queue() 来完成)。快乐编码。如果您有执行此操作的特定代码,请告诉我们。我们很乐意提供帮助。:)
于 2013-08-06T17:35:33.940 回答