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