2012-04-27 25 views
2

處理用戶應該能夠取消所有上傳的應用程序。現在我想知道是否必須追查QNAM的所有答覆,或者刪除它,並期望它們全部中止?QNetworkAccessManager析構函數是否中止當前請求?

在文檔中沒有任何關於中止的內容,但我假設它會。

銷燬QNetworkAccessManager對象並釋放所有資源。請注意,從此類返回的QNetworkReply對象將此對象設置爲其父項,這意味着如果您不在它們上調用QObject :: setParent(),它們將隨同它一起被刪除。

編輯: 結束了使用爲每一個答覆的包裝(其也取得所有權於其上,並確實retrys等),其在它的析構都斷開信號作爲藏漢中止它的QNetworkReplys。它與包裝一起被刪除(父 - >子)

回答

2

它只會刪除答覆。來源:

QNetworkAccessManager::~QNetworkAccessManager() 
{ 
    // ... 

    qDeleteAll(findChildren<QNetworkReply *>()); 

    // ... 
} 

而QNetworkReply的析構函數是空的,所以你需要手動中止它們。

+0

是的,我完全意識到這一點,因此在文檔中陳述。但是我更想知道在刪除QNAM之前是否必須中止()所有回覆(取消所有上傳)? – chikuba 2012-04-27 01:26:02

+0

@chikuba調用'abort()'的QNetworkReply析構函數的源代碼沒有任何東西。 – Anthony 2012-04-27 01:33:42

+0

@chikuba - 嗯,是的,因爲否則你會有,並試圖使用不再有效的指針。你好未定義的行爲。 – 2012-04-27 01:34:08

相關問題