0

我正在使用 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 方法添加到线程中?两种线程方法似乎都接受最多带有一个参数的选择器。阅读实际所需的代码将不胜感激。

谢谢你。

4

1 回答 1

-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 ];
于 2010-04-21T12:33:59.480 回答