申请缓慢

时间:2013-08-06 17:27:16

标签: ios objective-c

是否可以多次调用包含大量操作的操作?像保存按钮(我保存第一个对象)并想要添加其他对象,但应用程序变得如此缓慢,我无法导航到其他视图

2 个答案:

答案 0 :(得分:1)

您需要确保不要占用应用程序的主UI线程。一个潜在的简单修复是在不同的线程上进行保存操作。以下是使用Grand Central Dispatch如何做到这一点的示例:iPhone - Grand Central Dispatch main thread

示例:

//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];
    });    
});

答案 1 :(得分:1)

您可以随时在后台使用繁重的数据保存相关任务。您可以将与内容相关的内容分发到各种线程(队列),您需要将要保存的内容分开,如果它阻止了您的UI并使您的应用程序变慢,那么您需要在后台执行这些繁重的操作。

确保您不在后台执行任何UI更新操作。尝试阅读有关GCD(如何工作),如何创建后台队列等以及如何使用它。我假设你可能正在使用核心数据,以便在保存按钮上保存内容。尝试阅读有关父/子管理上下文对象的内容。稍微使用它并将繁重的任务移动到后台,UI的更新将始终在主线程或UI线程上(如果您正在使用调度队列,则可以通过调用get_main_queue()来执行此操作)。快乐的编码。如果您有特定代码,请执行此操作,请告知我们。我们很乐意提供帮助。 :)