2012-07-26 30 views
6

मेरा ऐप CLLocationManager के साथ उपयोगकर्ता को ट्रैक करता है। प्रतिनिधि कॉल में didUpdateToLocation मैं अपनी स्थिति को बचाने की सभी मजेदार चीजें करता हूं। हालांकि, मुझे परीक्षण करने का एक तरीका चाहिए कि क्या उन्होंने रोक दिया था। उस समय मैं रिकॉर्डिंग स्थानों को रोक सकता था और अपनी यात्रा पर विचार कर सकता था। तो मेरे पास में NSTimer है जो हर बार didUpdateToLocation कहा जाता है और हटा दिया जाता है। उस समय इसे शुरू किया जाएगा जब उपयोगकर्ता बंद हो जाता है और CLLocationManager कॉल होने से रोकता है। तो फिर इसे हटाने के लिएNSTimer और NSRunLoop

[[NSRunLoop mainRunLoop] addTimer:userStoppedMovingTimer forMode:NSRunLoopCommonModes]; 

:

[userStoppedMovingTimer invalidate]; 

मैं में इस तरह टाइमर जोड़ें पड़ा कभी नहीं किया है

एक ही रास्ता है कि मैंने कभी काम करने के लिए NSTimer मिल सकता है क्या करना है भूतकाल। क्या कोई इस बारे में कुछ प्रकाश डाल सकता है कि यह क्यों है?

+0

यदि आप '+ निर्धारित टाइमर विथटाइम इंटरवल के साथ टाइमर बनाते हैं: लक्ष्य: चयनकर्ता: userInfo: दोहराता है: ', यह कोई समस्या नहीं होनी चाहिए। –

उत्तर

8
documentation से

:

  1. उपयोग scheduledTimerWithTimeInterval:invocation:repeats: या scheduledTimerWithTimeInterval:target:selector:userInfo:repeats: वर्ग विधि टाइमर बना सकते हैं और वर्तमान चलाने पर यह शेड्यूल करने के लिए:

    तीन तरीके एक टाइमर बनाने के लिए कर रहे हैं लूप डिफ़ॉल्ट मोड में।

  2. एक रन पाश पर यह समय निर्धारण के बिना टाइमर वस्तु बनाने के लिए timerWithTimeInterval:invocation:repeats: या timerWithTimeInterval:target:selector:userInfo:repeats: वर्ग विधि का प्रयोग करें। ( यह बनाने के बाद, आप मैन्युअल रूप से बुला इसी NSRunLoop वस्तु की addTimer:forMode: विधि द्वारा एक रन पाश करने के लिए टाइमर को जोड़ना होगा।)

  3. टाइमर का आवंटन और initWithFireDate:interval:target:selector:userInfo:repeats: पद्धति का उपयोग करके यह आरंभ कर देगा। (यह बनाने के बाद, आप टाइमर एक रन पाश करने के लिए मैन्युअल रूप से द्वारा इसी NSRunLoop वस्तु की addTimer:forMode: विधि बुला जोड़ना होगा।)

आप शायद पहले से विकल्प 1 उपयोग कर रहे थे, और अब आप विकल्प 2 या 3 का उपयोग कर रहे हैं।