将异步调用的结果返回给调用它的方法

时间:2013-10-04 18:37:51

标签: cocoa-touch nsurlconnection nscondition

我正在为我正在开发的应用程序编写一个标准的NSURLConnection类,我希望能够使用后续的应用程序。

我们的想法是能够将URL和参数数组传递给此类中的方法,该方法将启动连接,然后在完成后返回结果。

-(NSData*)go :(NSString*)url :(NSArray)params

因为我从另一个类调用它,所以我希望能够将结果设置为该调用类中的变量。

NSData *result = [[connect alloc]go:testurl :testparams];

问题是结果没有马上到达所以当我返回我在“go”方法中设置的NSData时,它是空白的。

我尝试了一些像NSCondition这样的东西,并在go方法中的另一个线程上运行while循环来检查它是否已完成。

不幸的是,我之前并不知道这一点,NSURLConnections的异步连接在与运行“go”方法的NSCondition相同的线程上运行。因为当我锁定该方法所以它没有提前返回时,我也锁定了我的连接,所以它从未达到它的完成回调。

如何有效地暂停我的“go”方法,以便我的连接完成,这样我就可以将数据返回到我的应用中的任何位置。

我有可能以完全错误的方式解决这个问题,所以请告诉我是否是这种情况。它确实需要像这样工作,因为多个请求将同时发出,我希望这个连接类的不同实例能够控制它们。

0 个答案:

没有答案