2010-10-21 28 views
7

का मान बदलता हूं मेरे पास NSTtimer लागू है और यह ठीक काम कर रहा है। मेरे पास iPhone के लिए UISlider से जुड़ा समय अंतराल तर्क भी है। हालांकि जब मैं इसका मान बदलता हूं तो NSTimer अभी भी मूल समय अंतराल पर चल रहा है, यह अद्यतन नहीं होता है। मैं NSTimer को कैसे कार्यान्वित कर सकता हूं और इसे अपने UISlider परिवर्तनों के मान के रूप में अपना समय अंतराल बदल सकता हूं। नीचे वह पंक्ति है जिसका उपयोग मैं NSTimer के लिए कर रहा हूं।मैं अपने एनएसटीमर को कैसे अपडेट कर सकता हूं क्योंकि मैं समय अंतराल

[NSTimer scheduledTimerWithTimeInterval:mySlider.value 
           target:self 
           selector:@selector(myMethod) 
           userInfo:nil 
           repeats:YES]; 

मैं यह लगातार समय अंतराल इसे अद्यतन करने UISlider के मूल्य के साथ चाहते हैं।

उत्तर

6

आप मुझे डर नहीं सकते। इसके साथ अमान्य करें:

[myTimer invalidate]; 

फिर नए समय के साथ एक नया बनाएं। आपको इसे पहले भी शून्य पर सेट करना पड़ सकता है।

myTimer = nil; 
myTimer = [NSTimer scheduledTimerWithTimeInterval:mySlider.value 
              target:self 
             selector:@selector(myMethod) 
             userInfo:nil 
              repeats:YES]; 
+0

क्या आपको लगता है कि अगर मैं एक आईफोन 4 एलईडी – cgossain

+0

चालू और बंद करने के लिए स्ट्रोब लाइट मोड को कार्यान्वित करना चाहता हूं तो यह तरीका है यदि आप एक परिवर्तनीय टाइमर चाहते हैं। एक दूसरे से दो टाइमर ऑफसेट होने की संभावना के बारे में सोचें, हालांकि यह आपके आवेदन के लिए काम नहीं कर सकता है। – Ben

+0

आपकी मदद के लिए बहुत अच्छा धन्यवाद, मैं देखूंगा कि मैं इसे काम कर सकता हूं या नहीं। – cgossain

0

आप GCD

NSTimeInterval timeInterval=1; 
BOOL timerInvalidate=NO; 
dispatch_async(dispatch_get_global_queue(0, 0), 
       ^{ 
        while (!timerInvalidate){ 
        dispatch_async(dispatch_get_global_queue(0, 0), 
        ^{ 
        //your code; 
        }); 
        [NSThread sleepForTimeInterval:timeInterval]; 
        } 

       }); 

का उपयोग कर कुछ इस तरह करते हैं और जहां कोड में किसी अन्य स्थान से timeInterval का मूल्य बदल सकते हैं।

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