سؤال

ولدي شيئا من هذا القبيل:

 NSTimer* timer = [NSTimer scheduledTimerWithTimeInterval:1.0
                                                   target:self
                                                 selector:@selector(updateCountdown)
                                                 userInfo:nil
                                                  repeats:YES]; 

وأنا استكمال النص تسمية باستخدام هذا المؤقت. ليس في حالة معينة أريد للتحقق مما إذا الموقت نشط ثم يبطل الموقت. سؤالي هو كيف أجد أن توقيت نشطا أم لا؟

هل كانت مفيدة؟

المحلول

عند حرائق توقيت غير مكرر أنه يمثل نفسه أنها غير صالحة حتى تتمكن من التحقق ما إذا كان لا يزال ساري المفعول قبل إلغائها (وطبعا ثم تخليص نفسك من ذلك).

if ( [timer isValid] && yourOtherCondition){
    [timer invalidate], timer=nil;
}

في قضيتك لديك جهاز توقيت تكرار لذلك سوف تكون دائما صحيحة حتى يتم اتخاذ بعض الإجراءات لإبطال ذلك. يبدو في هذه الحالة كنت تقوم بتشغيل العد التنازلي لذلك سيكون متروك لكم للتأكد من إبطال وتخليص نفسك من ذلك عندما يصل العد التنازلي القيمة المطلوبة (في طريقة updateCountdown الخاص بك)

نصائح أخرى

وNSTimer لديه طريقة -isValid.

والحفاظ على جهاز ضبط الوقت في متغير مثيل، ووضع timer = nil عندما لم يكن هناك توقيت تشغيل (أي بعد استدعاء [timer invalidate]). ثم، لمعرفة ما اذا كان توقيت نشطا، ويمكنك التحقق من مجرد ما إذا كانت timer == nil.

في سويفت، يمكنك استخدام منطقية isValid لمعرفة ما إذا كان تشغيل الموقت:

if timer.isValid {
   // Do stuff
}

مستندات أبل :

<اقتباس فقرة>   

وقيمة منطقية التي تشير إلى ما إذا كان المتلقي هو حاليا   صالح. (للقراءة فقط)

     

وصحيح إذا كان المتلقي لا تزال قادرة على إطلاق النار أو كاذبة إذا كان توقيت   يبطل ولم يعد قادرا على اطلاق النار.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top