0
我仍然试图让我的脑袋周围使用后台线程来获取数据。当被调用的方法结束时,我不希望我的线程死掉,所以它看起来像后台线程中的异步操作将是错误的方法。但是,如果该提取可以被抢占,那么使用同步提取才有意义,所以主循环可以在等待来自服务器的数据时执行。同步操作(例如,stringFromURL)是否受到其他线程的抢占?
有人可以帮我解决这个问题吗?我想更好地理解它,即使您可能会建议使用网络库来隐藏所有这些复杂因素。
我仍然试图让我的脑袋周围使用后台线程来获取数据。当被调用的方法结束时,我不希望我的线程死掉,所以它看起来像后台线程中的异步操作将是错误的方法。但是,如果该提取可以被抢占,那么使用同步提取才有意义,所以主循环可以在等待来自服务器的数据时执行。同步操作(例如,stringFromURL)是否受到其他线程的抢占?
有人可以帮我解决这个问题吗?我想更好地理解它,即使您可能会建议使用网络库来隐藏所有这些复杂因素。
我开始阅读并发编程指南。它开始变得更清楚一些可能性。我已经看到一些关于GCD和NSOperations的教程,并且我不清楚。在我研究了这个之后,我会重新回答你的答案。 – Jim 2012-02-15 17:31:46
为什么你不希望线程在方法调用结束时死掉? – 2012-02-15 16:30:54
我需要处理操作的结果并进行清理。因此,在异步执行时需要使用完成方法或完成块。如果我同步执行,则可以将完成代码放入内联中。我可以在同步操作中执行此操作,但我试图了解如何在具有明确的单独完成方法时执行此操作。 – Jim 2012-02-15 17:25:00
如果您使用网络调用,您不能只使用NSURLConnection委托方法吗? (如[连接:didReceiveData])如果失败了,我想你可以同时执行两个操作并清理它并使用performSelectorInBackground在单独线程上运行该方法: – MGA 2012-02-15 18:40:00