2011-06-06 94 views
1

我有異步NSURLConnections工作得很好,當我使用我的viewController作爲委託,現在有各種各樣的連接,我想通過一個單身連接對象完成它們。所以我讓Connection爲每個連接創建一個新的委託對象。連接在應用程序委託中實例化,但+(void)send:(Message *)函數可能終止。NSURLConnection返回零長度數據

我對這種工作方式的感覺是,委託偵聽器被放到運行循環中(我對此並不十分清楚,但我認爲它們不在單獨的線程中。自己的responseData內存。)和connectionDidFinishLoading執行得很好,但是有一個空的responseData。由此我的意思是我發現自己在connectionDidFinishLoading但responseData具有零字節。

代碼中創建應用程序的委託(在發送方式)是:

ConnectionDelegate *delegate = [[ConnectionDelegate alloc] init]; 
NSURLConnection *connection=[[NSURLConnection alloc] initWithRequest:request delegate:delegate]; 

所以我的問題是兩折:

  1. 那是發送方法終止的問題?委託指針具有局部範圍。

  2. 如果這是問題,我該怎麼辦才能保持代表活着?

回答

0

你應該仔細檢查您的委託的執行connection:didReceiveData:

記住你是負責收集輸入數據段在那裏。

如果有任何疑問,請仔細閱讀Apple的文檔(特別是URL加載系統編程指南)和示例代碼。

+0

'connection:didReceiveData:'''[responseData appendData:data]'我認爲這是非常標準的。 – Djehuty 2011-06-07 00:02:06

+0

然後請在你的問題中粘貼你的'connection:didReceiveResponse:'代碼。請編輯您的問題,而不是評論。 – ZhangChn 2011-06-07 00:05:05

+0

好的,ZhangChn,我是StackOverflow的新手,對不起。不過,我感謝你的幫助。 – Djehuty 2011-06-07 00:10:33