在iphone应用程序中的线程之后调度线程

时间:2009-10-28 19:45:09

标签: iphone objective-c cocoa cocoa-touch nsthread

我想在线程完成后安排一个线程。

有可能吗?怎么样?

例如(指明我的需要)

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    // 1. response - schedule myThread 
    // 2. response - schedule a new thread which will be executed after myThread
    // 3. response - schedule a new thread which will be executed after second thread
    // .....
}

2 个答案:

答案 0 :(得分:10)

如果您使用NSOperations,则可以使用addDependency:方法指定操作的依赖项。

如果你走这条路,

NSInvocationOperation可能会对你有用。

编辑:我刚刚重新阅读了主题,你在iPhone上没有块,但作为参考,如果你有可用的块,NSBlockOperation甚至更好。

请注意,当使用这些方法执行异步操作(并假设其中的代码使用自动释放)时,您将负责在方法开始运行时实例化NSAutoreleasePool并在退出时释放/排除它。 / p>

答案 1 :(得分:2)

(1)您可以轮询线程isFinished属性。

(2)您可以注册调度/控制对象以接收线程NSThreadWillExitNotification通知。为了更精确地控制,您可以子类化NSThread并在线程停止之前发送通知作为最后一个动作。然后在控制对象通知处理程序中,您可以轮询isFinished以确保在启动下一个线程之前完成它。

请参阅Thread Programming GuideNSThread Class Guide