2015-07-02 10 views
12

स्विफ्ट में NSTimer चल रहा है या नहीं, यह जांचने के लिए कैसे करें। में Obj सी कोड इस तरह होना चाहिए, क्योंकि मुझे लगता है कि:स्विफ्ट में एनएसटीमर चल रहा है या नहीं, यह जांचने के लिए कैसे करें?

if (!myTimer) { 
    //DO 
} 

मैं इस तरह स्विफ्ट में यह स्थापित करने के लिए कोशिश कर रहा हूँ और यह त्रुटियों दिखा रहा है।

if !myTimer { 
// DO 
} 
+0

सभी प्रासंगिक जानकारी प्रदान करें, जिसमें वास्तविक पूर्ण त्रुटि संदेश शामिल होगा। – zaph

+0

@amro shahbari swift 3.1 काम नहीं कर रहा –

उत्तर

25

मैं क्या करता हूं (दोनों भाषाओं में) मेरा टाइमर कमजोर बनाना है। तेजी से यह एक कमजोर वैकल्पिक होगा।

weak var myTimer: NSTimer? 

तब मैं

myTimer = NSTimer.scheduledTimerWithTimeInterval(1, 
      target: self, 
      selector: "timerFired:", 
      userInfo: nil, 
      repeats: false) 

साथ एक टाइमर बनाने और फिर आप

if timer == nil 

उपयोग कर सकते हैं अगर यह चल रहा है बताने के लिए।

टाइमर बंद करने के लिए आप बस फोन

myTimer?.invalidate() 

ऑब्जेक्टिव-सी में यह

[myTimer invalidate]; 

कि ऑब्जेक्टिव-सी में काम करता है क्योंकि शून्य संकेत को संदेश भेजने वैध है, और सिर्फ करता होगा कुछ भी तो नहीं।

यदि आप कमजोर वैकल्पिक का उपयोग नहीं करना चाहते हैं, तो आप यह देखने के लिए टाइमर से पूछ सकते हैं कि यह valid संपत्ति को देखकर चल रहा है या नहीं।

+2

सिर्फ इसलिए कि 'टाइमर' शून्य नहीं है यह बताता है कि यह चल रहा है या नहीं। – zaph

+3

यदि आप इसे कमजोर बनाते हैं तो यह करता है। फिर एकमात्र मालिकाना संदर्भ रन लूप होता है, और इसके बाद आग लग जाती है/जब इसे अमान्य किया जाता है, तो इसे रिलीज़ किया जाता है और बाहर निकल जाता है। यह आसान है। –

+0

नहीं, कमजोर सूचक के साथ, \t टाइमरविथटाइम अंतराल: लक्ष्य: चयनकर्ता: userInfo: दोहराता है: एक टाइमर बनाता है जिसे तुरंत हटा दिया जाता है क्योंकि इसमें शून्य मजबूत संदर्भ हैं .. यह एक अपमानजनक मामला है। मैं जो वर्णन करता हूं उसका प्रयास करें। यह काम करता हैं। मे वादा करता हु। –

2
if !myTimer.valid { 
    //DO 
} 
+0

'myTimer' को काम करने के लिए 'कमजोर' संपत्ति के रूप में घोषित किया जाना चाहिए। – zaph

+0

@zaph, यह गलत है। इस दृष्टिकोण के लिए टाइमर ** ** कमजोर घोषित नहीं किया जा सकता है। –

11

नीचे दिए गए विकल्प के बारे में कैसे? क्या आप देख सकते हैं कि यह आपके लिए काम करता है

if myTimer.valid { 
} 
+0

'myTimer' को काम करने के लिए' कमजोर 'संपत्ति के रूप में घोषित किया जाना चाहिए। – zaph

+3

@zaph, नहीं। इसे कमजोर बनाने और शून्य कार्यों की जांच करने का मेरा दृष्टिकोण, या आप इसे मजबूत बना सकते हैं और फिर जांच सकते हैं कि timer.valid == सच है या नहीं। 'MyTimer.valid' का उपयोग ** ** ** की आवश्यकता नहीं है कि 'myTimer' कमजोर हो। –

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

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