मैं एक dispatch_queue जो अपने मालिक की संपत्ति के माध्यम से पहुँचा है उपयोग कर रहा हूँ, इस तरह:जीसीडी प्रेषण कतार संपत्ति को जारी करने का सही तरीका क्या है?
@property (nonatomic, assign) dispatch_queue_t queue;
नोट assign
कीवर्ड। कतार का उपयोग पूरे ऑब्जेक्ट्स लाइफ में किया जाता है और इस प्रकार ऑब्जेक्ट के स्वामित्व में होता है।
-(void)dealloc
{
dispatch_release(self.queue);
self.queue = nil;
}
मैं कैसे ठीक से इस रिलीज करते हैं: मैं कतार जब मालिक वस्तु पुनः आवंटित की जाती है जारी? retain/release
काम का उपयोग करेंगे?
रिलीज कॉल करते समय कतार पर लंबित/चल रहे सामान होने पर क्या होता है?
निश्चित रूप से यदि आपके पास कक्षा में एक _isValid था, जो dealloc में सेट है, तो ऑब्जेक्ट नष्ट हो जाएगा जिसका मतलब है कि _isValid को सुरक्षित रूप से पढ़ा नहीं जा सकता - इस के आसपास एक तरीका क्या है? – CiscoIPPhone
दरअसल ऐसा लगता है कि dispatch_group_wait कॉलिंग पूरी तरह से इस समस्या से बच जाएगी। – CiscoIPPhone
@CiscolPPhone "ऑब्जेक्ट नष्ट हो जाएगा" - असल में, ब्लॉक वृद्धि के भीतर संपत्ति का उपयोग नहीं कर पाएगा, इसकी रोकथाम गिनती होगी, इसलिए यह ब्लॉक के पूरा होने तक भी बंद रहेगा, यहां तक कि डेलोक के बाद भी? मैं इस से थोड़ा सा रहा हूं इसलिए मैं आम तौर पर ब्लॉक में कमजोर गुणों का संदर्भ देता हूं (ब्लॉक से पहले मैं '__weak MyClass कमजोर स्वयं = स्वयं' बना देता हूं, फिर ब्लॉक में केवल कमजोर स्वयं का उपयोग करें। फिर अगर ब्लॉक डेलोक के बाद निष्पादित करता है यह सिर्फ एक कमजोर कमजोर पड़ता है। प्रॉपर्टी और सुरक्षित रूप से मर जाता है।) – jankins