2011-11-03 7 views
8

मैं एक यूआईटीबल व्यू कंट्रोलर लोड करने के लिए ट्विटर खातों की एक सूची प्राप्त करने का प्रयास कर रहा हूं जिसमें डेटा है। मैं इस समारोह का उपयोग करें:(आईओएस 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 बोल रहा हूँ!)। मेरे सभी लॉग संदेश तुरंत मुद्रित हो जाते हैं, इसलिए मुझे यकीन नहीं है कि इंटरफ़ेस को स्थिर करने के कारण क्या हो रहा है।

उत्तर

16

सभी,

तो, मैंने इसे समझ लिया (तरह)। मुझे लगता है कि इसमें धागे के साथ कुछ करना है, मुझे उस धागे में कोई यूआई सामान नहीं करना था।

इसे ठीक करने के लिए, मैं कुछ भेजने कोड के साथ तालिका सामान घिरा हुआ:

[account requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) 
{ dispatch_async(dispatch_get_main_queue(), ^{ 
    ... 
});}]; 

फिर भी समझने के लिए यहां हो रहा है, लेकिन उम्मीद है कि इस में मदद मिलेगी अगर किसी को एक ही समस्या में चलाता है की जरूरत है।

+0

मुद्दा यह है कि UI थ्रेड मुख्य थ्रेड पर होना होता है, और '-requestAccessToAccountsWithType: withCompletionHandler: 'यह गारंटी नहीं देता है कि इसके पूर्णता ब्लॉक को मुख्य थ्रेड पर कॉल किया जाएगा। 'Dispatch_async' का आपका उपयोग यहां सही है, यद्यपि यदि आपके यूआई कॉल से पहले अधिक प्रसंस्करण करना है तो आप' dispatch_async' कॉल से पहले पृष्ठभूमि कतार में इसे स्वतंत्र रूप से कर सकते हैं। –

+0

धन्यवाद साथी, एक और दृश्य देरी के साथ एक ही मुद्दा था। यह मेरे लिए हल हो गया। – thgc

+2

ऐप्पल का नमूना कोड प्रदर्शन का उपयोग करता है चयनकर्ताऑनमेन थ्रेड: withObject: waitUntilDone: इस तथ्य से निपटने के लिए कि हैंडलर विधि मनमाने ढंग से कतार पर की जाती है। – sam

संबंधित मुद्दे