有没有关于如何在没有块的情况下使用 NSOperationQueue 的教程?

发布于 2024-11-11 18:13:23 字数 183 浏览 2 评论 0 原文

我的应用程序必须在 iOS 3.2 上运行,并且 -addOperationWithBlock: 等方法仅适用于 > 4.0。

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

My app must run on iOS 3.2 and the methods such as -addOperationWithBlock: only work in > 4.0.

But NSOperationQueue was available since iOS 2.0 so I'd like to give it a try the "old way". Does anyone know of a handy tutorial that shows the basics of how to use NSOperationQueue without blocks?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

离旧人 2024-11-18 18:13:23

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

因此,鉴于您想要调用这个方法:

- (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];

希望有所帮助。

it's pretty straightforward with Invocation operations. These are operations that allow you to send a message to a particular object with some object parameter (optional).

So given this method that you want to invoke:

- (void)doSomething {

        NSLog (@"Did it!");
}

You can do something like this to make it happen:

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

Hope that helps.

淡笑忘祈一世凡恋 2024-11-18 18:13:23

@Firoze Lafeer 给出了 NSInitation 操作的示例,但您也可以使用自己的 NSOperation 子类。

官方文档通过示例展示了您可以使用的每种类型的操作。即使有可用的块,有时也首选使用 NSOperation 子类来完成更大的任务。

@Firoze Lafeer gave an example with NSInvocation operation, but you can also use your own NSOperation subclass.

The official documentation shows with example every type of operation you can use. Even with blocks available, it's sometime preferred to use NSOperation subclass for bigger tasks.

终止放荡 2024-11-18 18:13:23

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

Found a pretty good tutorial here. It also goes beyond the topic and gives info on why it's not always a good idea to fetch data on the main thread.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文