दिलचस्प पोस्ट
पायथन में एसएफटीपी? (स्वतंत्र मंच) पीआईएल का प्रयोग करके पिक्सेल की आरजीबी प्राप्त करें स्विंग और एडब्ल्यूटी के बीच अंतर क्या है? जावा का उपयोग कर संसाधन के रूप में जार से .wav फ़ाइल खेलते हैं एनएलटीके में पार्सिंग के लिए अंग्रेजी व्याकरण अजाक्स HTTPS पर अनुरोध प्राप्त करें RMySQL dbWriteTable field.types के साथ पायथन में पॉइंटर्स अनुकरण करना Django: तिथि के अनुसार समूह (दिन, महीने, वर्ष) प्रोटोकैक्टर वैश्विक चर सेट मैं xcode5 पर पूर्ण बिल्ड लॉग कैसे देखूं? मैं संदर्भ के एक सदिश क्यों नहीं बना सकता? कैसे गिट में एक टैग अंक कमाने के लिए कहने के लिए? बाश स्क्रिप्ट में लौटें मूल्य अपने एपीआई का उपयोग करके एक मूल मेलचिप साइनअप फ़ॉर्म बनाएं

उद्देश्य सी – लेबल पाठ बदलने के लिए लूप

मेरे पास ऐसा लूप है जो इस तरह दिखता है

for(int x=0; x < 10; x++){ [testLabel setText:[self randomString]]; sleep(1); } 

RandomString एक विधि है जहां यह एक सरणी से एक यादृच्छिक स्ट्रिंग देता है।

मैं नींद का उपयोग कर रहा हूं, इसलिए लेबल बदलना वास्तव में संभव है

लूप ठीक काम करता है लेकिन केवल लूप से अंतिम यात्रा के बाद लेबल को अपडेट किया जाता है।

क्या किसी को पता है कि यह क्यों हो सकता है? और क्या इसे ठीक करने का एक तरीका होगा?

Solutions Collecting From Web of "उद्देश्य सी – लेबल पाठ बदलने के लिए लूप"

नींद न बोलें ()

निश्चित रूप से कभी भी मुख्य थ्रेड पर नहीं और माध्यमिक धागे में किसी भी sleep उपयोग आम तौर पर अत्यधिक संदिग्ध है।

इस स्थिति में, समय-समय पर मूल्य को अद्यतन करने के लिए बस एक NSTimer उदाहरण का उपयोग करें (जैसा कि विलबर ने कहा)।

यूआई केवल एक रन लूप के अंत में अपडेट होता है, जिसमें से आपका लूप एक सिंगल इरेस्ट्रेशन के अंदर चल रहा है। आपको इसके बजाय एक NSTimer का उपयोग करना चाहिए।

अपडेट करने के लिए आपको इसे अलग से चलाने चाहिए:

 for(int x=0; x < 10; x++){ [self performSelectorOnMainThread:@selector(updateLabel) withObject:nil waitUntilDone:NO]; sleep(1); } - (void) updateLabel { [testLabel setText:[self randomString]]; } 

यह बेहतर है यदि आप अपनी स्ट्रिंग को पृष्ठभूमि थ्रेड पर चलाते हैं

 [self performSelectorInBackground:@selector(updateBusyLabel:) withObject:[NSString stringWithFormat:@"Processing ... %i",iteration]]; -(void)updateBusyLabel:(NSString *)busyText { [_busyLabel setText:busyText]; } 

मैं नींद () का उपयोग नहीं करेगा, और टाइमर बहुत अधिक काम है।