कक्षा QNetworkReply का एक उद्देश्य है। एक स्लॉट (किसी अन्य ऑब्जेक्ट में) अपने समाप्त() सिग्नल से जुड़ा हुआ है। संकेत सिंक्रोनस (डिफ़ॉल्ट वाले) हैं। केवल एक धागा है।क्यूटी में सिग्नल और स्लॉट के संबंध में कैसे काम करता है और हटाता है?
कुछ समय पर मैं दोनों वस्तुओं से छुटकारा पाना चाहता हूं। उनमें से कोई संकेत या कुछ भी नहीं। मैं उन्हें जाना चाहता हूँ। ठीक है, मैंने सोचा, मैं
delete obj1; delete obj2;
इस्तेमाल करेंगे लेकिन मैं सच में कर सकते हैं? ~ QObject के लिए चश्मा कहते हैं:
एक QObject हटाया जा रहा लंबित घटनाओं एक दुर्घटना का कारण बन सकती वितरित होने की प्रतीक्षा कर रहे हैं।
'लंबित घटनाएं' क्या हैं? क्या इसका मतलब यह हो सकता है कि जब मैं अपना delete
कह रहा हूं, तो पहले से ही कुछ लंबित घटनाएं वितरित की जा रही हैं और वे एक दुर्घटना का कारण बन सकते हैं और मैं वास्तव में जांच नहीं सकता कि कोई है या नहीं?
तो चलो कहते हैं कि मैं कॉल:
obj1->deleteLater(); obj2->deleteLater();
सुरक्षित होने के लिए।
लेकिन, क्या मैं वास्तव में सुरक्षित हूं? deleteLater
एक ऐसी घटना को जोड़ता है जो नियंत्रण के दौरान मुख्य लूप में संभाला जाएगा। obj1
या obj2
के लिए पहले से ही कुछ लंबित घटनाएं (सिग्नल) हो सकती हैं, मुख्य लूप में हटाने से पहले प्रतीक्षा करने के लिए प्रतीक्षा किया जा रहा है? यह बहुत दुर्भाग्यपूर्ण होगा। मैं 'कुछ हद तक हटाई गई' स्थिति के लिए कोड जांच लिखना नहीं चाहता हूं और मेरे सभी स्लॉट में आने वाले सिग्नल को अनदेखा करना चाहता हूं।
'obj-> डिस्कनेक्ट() की तरह दिखता है; obj-> deleteLater(); 'जाने के लिए सही तरीका है: – stach