说我们有:
pManager = new QNetworkAccessManager();
QObject::connect(pManager, SIGNAL(finished(QNetworkReply*)),this, SLOT(finishedSlot(QNetworkReply*)));
和
void finished(QNetworkReply* reply);
如果我们删除finished
内的回复,我们会收到段错误。这是否意味着我们不会释放它?
答案 0 :(得分:6)
来自http://doc.qt.io/qt-5/qnetworkreply.html:
注意:请勿删除连接到此信号的插槽中的对象。使用deleteLater()。
答案 1 :(得分:3)
来自finished
信号的QNetworkAccessManager
文档:
注意:不要删除连接到此信号的插槽中的回复对象。使用deleteLater()。
确实,你不应该删除它,而是调用deleteLater
。
答案 2 :(得分:0)
困惑。但这会删除插槽末尾的QNetworkReply实例而不是QNetworkAccessManager实例。这实际上在两个项目上都有效吗,还是我们还需要在QNetworkAccessManager本身上显式删除deleteLater(以及如何最好地访问它,假设我们不需要第二个信号槽连接)。关于这一点,文档没有任何说明。打算建立一个测试案例,其中包含数千个调用,但董事会中的其他人肯定知道。 dck