मुझे थ्रेड के अंदर एक दृश्य को संशोधित करने में समस्याएं आ रही थीं। मैंने एक सबव्यूव जोड़ने की कोशिश की लेकिन इसे प्रदर्शित करने में लगभग 6 या अधिक सेकंड लग गए। आखिर में यह काम कर रहा है, लेकिन मुझे नहीं पता कि वास्तव में कैसे। तो मैं सोच रहा था क्यों यह काम किया है और क्या निम्न विधियों के बीच का अंतर है:मुख्य कतार पर performSelectorOnMainThread और dispatch_async के बीच क्या अंतर है?
//this worked -added the view instantly
dispatch_async(dispatch_get_main_queue(), ^{
//some UI methods ej
[view addSubview: otherView];
}
//this took around 6 or more seconds to display
[viewController performSelectorOnMainThread:@selector(methodThatAddsSubview:) withObject:otherView
waitUntilDone:NO];
//Also didnt work: NSNotification methods - took also around 6 seconds to display
//the observer was in the viewController I wanted to modify
//paired to a method to add a subview.
[[NSNotificationCenter defaultCenter] postNotificationName:
@"notification-identifier" object:object];
संदर्भ के लिए इस ACAccountStore के वर्ग के इस Completetion हैंडलर के अंदर बुलाया गया।
accountStore requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) {
if(granted) {
//my methods were here
}
}
संपादित करें: जब मैं कहता हूं कि यह काम नहीं करता है तो मेरा मतलब है कि मैंने जो दृश्य जोड़ा है उसे प्रदर्शित करने में लगभग 6 सेकंड लग गए।
जब आप कहते हैं कि 'प्रदर्शन चयनकर्ता ओनमेन थ्रेड:' काम नहीं किया, यह कैसे विफल हुआ? क्या आपको एक त्रुटि संदेश मिला? क्या यह एक रनटाइम त्रुटि संकलन त्रुटि था? अगर आपको कोई त्रुटि नहीं मिली है, तो आप कैसे जानते हैं कि यह असफल रहा? –
क्या 'addSubview:' आपके द्वारा उपयोग की जाने वाली एकमात्र विधि यूआई तत्वों को छुआ है, या अन्य भी हैं? –
@AndrewMadsen मैं यह उल्लेख करना भूल गया कि यह काम करता है लेकिन इसे प्रदर्शित करने में लगभग 6 या अधिक सेकंड लग गए। –