2011-05-24 111 views
2

我正在Mac OS X(10.6)上构建一个应用程序。在这个应用程序中,我有一个屏幕,用户将提供输入,并将其保存为本地文件夹中的plist。这个plist文件需要使用HTTP POST服务被传送到服务器。应该检查服务器连接,如果连接失败,文件将保存在本地文件夹中。在一定的时间内,服务器连接将再次被检查,如果找到,则将所有存储在本地文件夹中的文件逐个发送。如何独立运行两个任务

基本上,GUI应用程序将持续运行以获取来自用户的输入,并且在另一个线程中应该检查服务器连接并发送文件。

所以我的问题是什么可能是解决问题的好方法,如果任何人可以发送一些示例代码,这对我来说会很好。

感谢, 巴润

+0

我正在使用COCOA/Objective C构建应用程序。 – Barun 2011-05-24 19:22:14

回答

3

有在Objective-C穿线几种方法!最简单的策略是NSOperationQueue。重写NSOperation来处理你的HTTP请求,如果你需要在完成时得到通知,可以选择设置一个完成块,将它的一个实例添加到一个NSOperationQueue对象中,并且你很好。如果第一次失败,则设置NSTimer重新安排上传时间。你可以使用NSURLConnection来处理网页内容。请注意,NSURLConnection可以异步连接或阻塞连接。既然你的NSOperation子类已经在一个单独的线程中运行,你可能想要使用阻塞方法(如果你不需要创建一个并发的NSOperation子类,这是更多的工作)。你也可以使用Grand Central Dispatch的API,将一个新的线程分离到你指定的方法,或者使用普通的老c(我不会推荐最后两个但很好的提及它们)。作为奖励,当您同时运行多个操作时,NSOperationQueue和Grand Central Dispatch都知道“什么是正确的”,并且会扩展线程数以适应用户计算机中的核心数量,以获得最佳性能。

检查NSOperationQueue,NSOperation和NSURLConnection的文档。指南和示例项目将包含您所需的所有源代码,以帮助您开始朝正确的方向发展。

+0

我发现帖子很有意思。您能否请您提供一些给定问题的示例代码。 – Barun 2011-05-25 18:26:16

+0

正如我所说的,文档应该有大量的示例代码。 – 2011-05-25 19:06:34