是否有没有块使用NSOperationQueue的教程?

时间:2011-05-31 14:11:10

标签: multithreading ios performance nsoperation nsoperationqueue

我的应用必须在iOS 3.2上运行,而-addOperationWithBlock等方法只适用于> 4.0。

但是NSOperationQueue从iOS 2.0开始就可用,所以我想尝试一下“老方法”。有没有人知道一个方便的教程,它显示了如何在没有块的情况下使用NSOperationQueue的基础知识?

3 个答案:

答案 0 :(得分:6)

使用Invocation操作非常简单。这些操作允许您使用某个对象参数(可选)将消息发送到特定对象。

所以给定你要调用的方法:

- (void)doSomething {

        NSLog (@"Did it!");
}

你可以做这样的事情来实现它:

// Get or create some queue
NSOperationQueue *someQueue = [NSOperationQueue mainQueue];

// create an invocation operation
NSInvocationOperation *invocationOp = [[NSInvocationOperation alloc]  initWithTarget:self
                                                                                selector:@selector(doSomething)
                                                                                 object:nil];

[someQueue addOperation:invocationOp]; // Add the operation to the queue

[invocationOp release];

希望有所帮助。

答案 1 :(得分:3)

@Firoze Lafeer举例说明了NSInvocation操作,但您也可以使用自己的NSOperation子类。

official documentation显示了您可以使用的每种操作类型的示例。即使有可用的块,有时也可以使用NSOperation子类来完成更大的任务。

答案 2 :(得分:2)

找到了一个非常好的教程here。它也超出了主题,并提供了为什么在主线程上获取数据并不总是一个好主意的信息。