मैं प्रस्तुतियों में से कुछ पर देखा है WWDC 2010 फार्म और भी ब्लॉक और संगामिति पर दस्तावेज़ों के सबसे पढ़ सकते हैं और ग्रांड सेंट्रल डिस्पैच में धारावाहिक कतारों के साथ ब्लॉकों का उपयोग कर के बारे में सवालों की एक जोड़ी है। छवियों यूआरएल और इतने पर - मैं एक iOS 4 परियोजना एक scrollview और छवि जानकारी का एक शब्दकोश है कि है। मैं छवियों को डाउनलोड करने के लिए जीसीडी और ब्लॉक का उपयोग करना चाहता हूं और उन्हें अपने स्क्रॉलव्यू में डाल देना चाहता हूं, इस प्रकार मुख्य धागे को अवरुद्ध नहीं कर रहा हूं।आईओएस 4 GCD सवाल
for (NSDictionary* dict in images)
{
dispatch_async(image_queue, ^{
NSString* urlString = [dict objectForKey:@"url"];
NSURL* url = [NSURL URLWithString:urlString];
NSData* imageData = [[NSData alloc] initWithContentsOfURL:url];
UIImage* image = [UIImage imageWithData:imageData];
UIImageView* imageView = // initialize imageView with image;
dispatch_async(dispatch_get_main_queue(), ^{
[self.scrollView addSubview:imageView];
});
[imageData release];
});
}
मैं दो प्रश्न हैं:: मैं निम्नलिखित कोड है जो काम करने के लिए लगता है लिखा है
संगामिति गाइड मैं enclosing गुंजाइश है कि गैर अदिश प्रकार के होते हैं से चर पर कब्जा नहीं करना चाहिए के अनुसार - मेरे कोड में मैं एक कब्जा करता हूं जो एक NSDictionary * वस्तु है। अगर मुझे इसे कैप्चर करने की अनुमति नहीं है, तो मुझे कोड कैसे लिखना चाहिए? क्या एक ब्लॉक केवल संलग्न क्षेत्र से भिन्न चर को कैप्चर करता है जिसका उपयोग वास्तव में किया जाता है?
क्या होता है अगर मैं वर्तमान ViewController छोड़ से पहले सभी छवियों धारावाहिक प्रेषण कतार के माध्यम से लाई जाती हैं? मुझे नहीं लगता कि वे जानते हैं कि उन्हें बनाए गए व्यू कंट्रोलर चले गए हैं, तो जब वे पूरा होल्डर निष्पादित करते हैं तो क्या होता है जहां मैं मुख्य थ्रेड पर अपने स्क्रॉलव्यू में छवि दृश्य डालता हूं? क्या यह एक त्रुटि या क्या कारण है? और जब मेरा व्यू कंट्रोलर गायब हो जाता है तो मैं सीरियल कतार पर किसी भी शेष परिचालन को कैसे रद्द कर सकता हूं?
सादर,
मैं इस पर कुछ सर्वोत्तम प्रथाओं को भी देखना चाहता हूं। –