2011-02-23 45 views
2

我有一個應用程序,適度使用NSURLConnection。這些異步調用最終完成並正確釋放(看起來像),但有時需要一段時間才能完成。如何告訴iPhone NSURLConnection中止

所以,有些時候我退出程序,(注意,不是僅僅將其發送的背景),其中一些連接仍然有效。如果我立即重新啓動應用程序,則應用程序在啓動時會凍結。 (didFinishLaunchingWithOptions似乎永遠不會被調用)。

雖然我不能肯定這些連接的問題,它很可能是好的,終止或取消任何剩餘。有關如何做到這一點的任何建議?

關於如何調試重啓的獎勵點也。 (我已經保存的NSLog語句可下載的文件)

+0

實例似乎啓動問題只發生在調試器。 – Jahmic 2011-02-24 16:44:37

回答

7

您可以通過發送取消命令來取消任何NSURLConnection。

[connection cancel];

從蘋果docs

取消一個 請求的異步負載。一旦調用此方法,接收方的代理將不再接收 的任何消息,該接收方爲此 NSURLConnection。

你的啓動問題可能是相關的,但很難說,不知道你正在下載什麼類型的數據以及你如何使用它。

+0

這基本上是我發現的。但是,就像我的情況一樣,我需要保留一個動態連接列表,所以當時機到來時,您就知道要取消哪些連接。 – Jahmic 2011-02-24 16:43:16

+0

@jahmic同樣的問題在這裏,我也必須通過NTLM來管理tableview單元格上的圖像加載,並且困惑如何關閉特定的連接。 – dip 2016-10-25 04:12:26

+0

@dip這是前一陣子。所以細節是模糊的,但我似乎記得保留所有連接的數組,並定期循環並檢查每個連接。 – Jahmic 2016-12-04 09:56:49

0

請確保您連接上調用release。也許它不調用關閉或關閉套接字,直到最後一個引用被刪除。我做了這樣的事情,沒有引用問題。

NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url]; 
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 
[connection release]; 
[request release]; 
+0

是的,在委託通知完成或失敗後,釋放被調用。但我的意思是,而不是等待異步調用完成,告訴他們現在放棄。可能? – Jahmic 2011-02-24 07:18:32

0

對於取消最後請求:[NSURLConnection的cancelPreviousPerformRequestsWithTarget:自];

對於取消任何具體要求:[請求取消]; 注:這裏的要求是NSURLConnection的