我的应用必须在iOS 3.2上运行,而-addOperationWithBlock等方法只适用于> 4.0。
但是NSOperationQueue从iOS 2.0开始就可用,所以我想尝试一下“老方法”。有没有人知道一个方便的教程,它显示了如何在没有块的情况下使用NSOperationQueue的基础知识?
答案 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。它也超出了主题,并提供了为什么在主线程上获取数据并不总是一个好主意的信息。