English 中文(简体)
如何用客观的方法撰写非锁定方法
原标题:How to write a non-blocking method in objective-c

I want to write a method that does not block. The method doesn t return anything. This is not over the web or anything - its all local to the device it is running on.

基本上,呼吁办法只是想让其他一些目标去照顾一些东西。 一旦它告诉它“是做的”,呼吁者希望回到自己的工作,而不是等待目标完成这项任务。

我不想使用国家核通知。

EDIT:我希望能够利用关于3.1.2和以后的框架做到这一点。

EDIT:感谢所有重要答复,但我对选择哪些答复没有把握。 我的要求只是说,呼吁方法能够向所谓的方法提出论点,在不等待结果的情况下立即返回。 什么是最佳解决办法?

最佳回答

你们使用的是:校准、国家安全行动、在校服上添加国家安全局职业或担任选修者,制造read。

<>Update>

这取决于你想要做的事情的时间和复杂性。 如果它很简单(例如,简单的案文对等),那么它就只是添加到主机上。 如果需要更多的时间(例如下载或开立档案),那么你就希望它脱离主机。

www.un.org/Depts/DGACM/index_spanish.htm 1. 创建read

您可使用<代码>pthread接口,以创造一个或多个校对来完成您的工作。

人们可以选择对清单中任何选择的最大表现和控制的read子。 关于业绩: 这要求你了解成本和问题。 read的创造不是微不足道的,因此,它有利于重新使用或分配任务。 同时设计和测试也耗费大量时间。

Personally,我对我大多数多读需要使用更方便的抽象(更具体地说,更方便)。 如果可运输性很重要,那么你很可能想要使用这种抽象的层,因为其余选择没有真正在 Apple果系统之外看到。

You could also use something like -[NSObject performSelectorInBackground:withObject:] for convenience with objc types.

http://www.ohchr.org。

(a.k.a. GCD)

尽管我看不出你的选择,但我只字不提: 能够像一个任务/任务/任务/准备的集思广益层。 该图书馆经常用于并行工作。 它利用 pool合任务,可能阻挡或仓促开展工作。 而是快速和简单的抽象,易于使用。

NSOperation

Task (NSOperation) / pool+scheduler (NSOperationQueue) based interface which now uses libdispatch. This feels more task focused than libdispatch. It preceded libdispatch, and has an ObjC interface. There is, however, a lot of overlap in functionality. Rather fast and simple abstraction, and easy to use.

www.un.org/Depts/DGACM/index_spanish.htm 添加一则国家职业介绍或演练的选修读物,读到一个运行的休息室。

If your task is simple, you may want to use this low overhead approach of simply telling an object to perform a selector or an NSInvocation on a particular thread. The system will add it to the list of things to do (for the specified thread s run loop).

我读了你的更新和评论,不了解你的具体问题的时间/复杂性,建议<代码>NSOperation。 <代码>pread相当复杂,只要你需要做些事情,你就应赞成把眼镜放在一起。

问题回答

有几个可以帮助您的实用方法——这或许最有可能是:

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


- (void)doStuff {
    // Do whatever you want to do here. It s in the background.
}

However, that assumes that you don t want to cancel your background task - you should also look at NSOperation and NSOperationQueue if you need more control.

我将使用GCD

使用NSThread sdetach NewThreadSelector:toTarget:withObject:

这一小 pe子为我工作(有20秒的拖延顺序)。

CFRunLoopRunInMode(kCFRunLoopDefaultMode, 20.0, false);




相关问题
Silverlight, Updating the UI during processing

I have a simple silverlight multifile upload application, and i want to provide the user with some feedback, right now its only in a test phase and i dont have the webservice. Somehow i cant get the ...

Is reading from an XmlDocument object thread safe?

I was wondering if i could safely read from an XmlDocument object using SelectNodes() and SelectSingleNode() from multiple threads with no problems. MSDN says that they are not guaranteed to be ...

Terminating a thread gracefully not using TerminateThread()

My application creates a thread and that runs in the background all the time. I can only terminate the thread manually, not from within the thread callback function. At the moment I am using ...

热门标签