IOS:使用NSOperationQueue和NSOperation执行耗时操作

当执行如查询数据,连接网络等耗时操作时,为了不让UI被阻塞,通常是另起一个线程来执行耗时的任务,当使用线程来处理时如果逻辑编写稍有不慎就容易产生各种各样的错误,iOS也考虑到了这个问题,所以为了减轻程序员的痛苦,专门提供了NSOperationQueue和NSOperation来处理耗时操作。 使用方法很简单,如:
NSOperationQueue* operationQueue = [NSOperationQueue new];
NSInvocationOperation* operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(refreshStaffsWithOperation) object:nil];
[operationQueue addOperation:operation];
我这里是执行的一个从网络上获取数据的耗时操作,NSInvocationOperation是NSOperation的子类,将operation添加到队列中后,IOS就回自动发起一个线程来执行selector指定的任务。 在非UI线程中不能更新UI界面,所以你可以执行如 [self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES]; 来更新UI界面。

你可能感兴趣的:(ios,NSOperation)