2010-04-21 196 views
0

我正在移動我的第一個步驟與網址連接和線程,所以如果這個問題可能會導致微不足道。 基本上我想在一個單獨的線程中執行NSUrlConnection(即使這可能導致許多文檔狀態爲'危險')。在決定是否採用這個解決方案之前,我應該設法首先實現它。 現在問題很簡單:做這件事的實際代碼是什麼。 我知道如何在單獨的線程中執行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

您可以創建一個方法來照顧創建NSURLConnection和其他相關的東西。
然後,在另一個線程中調用該方法。

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

NSAutoreleasePool是處理自動釋放對象所必需的。由於連接方法在不同的線程上執行,因此沒有合適的池,您必須自己創建池。

然後創建Connect方法螺紋:

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

您好,感謝您的回答。我試圖按照建議做,新創建的方法設置請求,連接和池。正如我從控制檯上看到的那樣,它經常在新線程中調用,但是沒有任何反應。我的意思是委託連接方法不會被調用。沒有附加數據,沒有連接成功或失敗。任何想法呢? – user236739 2010-04-22 09:35:10

+0

您無法訪問NSURLConnection的所有代理。 – Satyam 2010-12-28 11:23:54

相關問題