2011-11-28 109 views
0

我遵循以下代碼在我的應用程序中建立https連接,以便在我的iphone(iOS4)應用程序中以xml格式獲取一些數據。未連接多個連接,iphone,使用http/https連接

  1. 創建使用NSURLConnection的連接
  2. 連接:didReceiveResponse:實施
  3. 連接:didReceiveData
  4. connectionDidFailWithError
  5. connectionDidFinishLoading

我提到exacly以下建立連接: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html

一切工作正常的單個連接。但是,如果我同時嘗試2個(或更多)連接(每個連接都在單獨的線程中),並且如果正在服務第一個連接,則第二個連接將被丟棄。

第二個連接永遠不會排隊。它只是被丟棄。只有第一個服務。

可能是什麼問題?我的要求是同時創建多個(至少2個)連接。

另外,如果可能,請分享示例代碼或鏈接或示例。 謝謝

+0

發佈您的代碼... –

回答

0

在單獨的線程中運行NSURLConnection不是一項簡單的任務。如果您只是在單獨的線程中執行NSURLConnection,則不能處理委託方法,因爲在代碼實際執行之前線程已完成。


後您初始化NSURLConnection的對象,你實際上需要 把類無限循環,以確保該類仍然 在世時的委託方法被擊中。

NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:urlReq delegate:self]; 

while(!finished) { 
    [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]; 
} 

- (void) connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    finished = TRUE; 
} 

看到這篇文章 - NSURLConnection in its own thread

+0

我已經做了完全一樣的。正如我所說的,它對於單一連接非常有用。但是當我進行多重連接時,我的第二個連接就會丟失 – RDX