मैं एक यूआईटीबल व्यू कंट्रोलर लोड करने के लिए ट्विटर खातों की एक सूची प्राप्त करने का प्रयास कर रहा हूं जिसमें डेटा है। मैं इस समारोह का उपयोग करें:(आईओएस 5) ट्विटर खातों की सूची प्राप्त करते समय, टेबल व्यू लटकता है?
- (void)viewDidLoad {
[accountStore requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) {
...
[[self tableView] insertRowsAtIndexPaths ...];
[[self tableView] reloadData];
NSLog("This message appears immediately");
...
}];
NSLog("This message appears immediately");
}
किसी कारण से, इंटरफ़ेस तालिका वास्तव में अद्यतन हो जाता है/दोबारा बनाई से पहले 5 सेकंड के लिए "लटका" लगता है (ध्यान दें कि मैं reloadData बोल रहा हूँ!)। मेरे सभी लॉग संदेश तुरंत मुद्रित हो जाते हैं, इसलिए मुझे यकीन नहीं है कि इंटरफ़ेस को स्थिर करने के कारण क्या हो रहा है।
मुद्दा यह है कि UI थ्रेड मुख्य थ्रेड पर होना होता है, और '-requestAccessToAccountsWithType: withCompletionHandler: 'यह गारंटी नहीं देता है कि इसके पूर्णता ब्लॉक को मुख्य थ्रेड पर कॉल किया जाएगा। 'Dispatch_async' का आपका उपयोग यहां सही है, यद्यपि यदि आपके यूआई कॉल से पहले अधिक प्रसंस्करण करना है तो आप' dispatch_async' कॉल से पहले पृष्ठभूमि कतार में इसे स्वतंत्र रूप से कर सकते हैं। –
धन्यवाद साथी, एक और दृश्य देरी के साथ एक ही मुद्दा था। यह मेरे लिए हल हो गया। – thgc
ऐप्पल का नमूना कोड प्रदर्शन का उपयोग करता है चयनकर्ताऑनमेन थ्रेड: withObject: waitUntilDone: इस तथ्य से निपटने के लिए कि हैंडलर विधि मनमाने ढंग से कतार पर की जाती है। – sam