如何在iOS中执行背景中的某些任务

时间:2012-10-23 09:16:38

标签: iphone sqlite ios6

我想在后台执行一些与数据库相关的任务,因为我添加了代码

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,
                                             0), ^(void) {
        [lclDB  deleteRecoredwithBlock:^(BOOL success) {
            if (success) {
                NSLog(@"Deletion Succesful...");
            }
        }];
    });

deleteRecord函数在内部调用方法的数量顺序执行本地数据库中的删除操作。现在我等到所有执行删除操作。但是我想在后台执行这个完整的删除操作。如果任何一个已知的请帮帮我找出这些问题。

3 个答案:

答案 0 :(得分:1)

任何NSObject都可以使用以下方法在后台执行操作:

[myObject performSelectorInBackground:@selector(anAction) withObject:nil];

More information on apple documentation.

答案 1 :(得分:0)

尝试performSelectorInBackground:withObject:方法。

答案 2 :(得分:0)

[self performSelectorInBackground:@selector(backgroundMethod) withObject:nil];

您也可以使用NSInvocationOperation

NSOperationQueue *queue = [NSOperationQueue new];
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(deleteDataWithOperation) object:nil];
[queue addOperation:operation];

这是您的deleteDataWithOperation方法 -

-(void)deleteDataWithOperation
{
   //Do your work here
}