نلقي نظرة فاحصة QDBUSPINTeningcallwatcher الوثائق:
قد تكون الفتحة المتصلة بها بواسطة الرمز أعلاه شيء مشابه لما يلي:
void MyClass::callFinishedSlot(QDBusPendingCallWatcher *call)
{
QDBusPendingReply<QString, QByteArray> reply = *call;
if (reply.isError()) {
showError();
} else {
QString text = reply.argumentAt<0>();
QByteArray data = reply.argumentAt<1>();
showReply(text, data);
}
call->deleteLater();
}
دعوة qobject :: deletelater. هو المفتاح: هذا يعني أن QT ستحذف الكائن بمجرد إرجاع التنفيذ إلى حلقة الحدث.
طالما اتصلت deleteLater
في داخل Client::handler(...)
, ، لا تحتاج إلى ذلك - على وجه التحديد أنك لن - اتصل delete watcher;
في أى مكان. الشيء الوحيد الذي يجب أن تضمنه هو أن لا أحد يستخدم الكائن وراءه call
بعد إرجاع الفتحة.