1

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

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

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

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

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

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

我尝试了一些方法,例如 NSCondition 并在 go 方法中的另一个线程上运行 while 循环以检查它是否已完成。

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

如何有效地暂停我的“go”方法足够长的时间以完成连接,以便我可以将数据返回到我的应用程序中的任何位置。

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

4

0 回答 0