如何在单独的线程中执行NSUrlConnection?

时间:2010-04-21 12:25:23

标签: iphone nsurlconnection nsthread

我正在使用url连接和线程移动我的第一步,所以如果问题可能导致微不足道,请耐心等待。 基本上我想在一个单独的线程中执行一个NSUrlConnection(即使这可能导致'危险',因为许多文档状态)。在决定是否采用此解决方案之前,我应该首先设法实现它。 现在问题非常简单:实际执行的代码是什么。 我知道

NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self];

执行下载,我试过它似乎工作。 我读过那个

- (id)initWithTarget:(id)target selector:(SEL)selector object:(id)argument

+ (void)detachNewThreadSelector:(SEL)aSelector toTarget:(id)aTarget withObject:(id)anArgument

将用于创建新线程

现在,如何将initWithRequest方法添加到线程中?两种线程方法似乎都接受一个最多只有一个参数的选择器。 阅读实际所需的代码将非常感激。

谢谢。

1 个答案:

答案 0 :(得分:-1)

您可以创建一个方法来处理NSURLConnection的创建以及其他相关的事情 然后,在另一个线程中调用该方法。

- ( void )connect
{
    NSAutoreleasePool * pool = [ [ NSAutoreleasePool alloc ] init ];
    NSURLConnection * theConnection = [ [ NSURLConnection alloc ] initWith ... ];
    /* Rest of the code... */
    [ pool release ];
}

需要NSAutoreleasePool来处理自动释放的对象。由于connect方法在不同的线程上执行,因此没有池,您必须自己创建它。

然后为connect方法创建一个线程:

[ NSThread detachNewThreadSelector: @selector( connect ) toTarget: self withObject: nil ];