Temel olarak, bir anahtar olayı aldığında tekrarlanması gereken ve kullanıcı anahtarı serbest bıraktığında geçersiz kılan bu zamanlayıcıya sahibim. Ancak, NSRunLoop'taki addTimer:forMode:
'u arayarak bile zamanlayıcıyı "doğrulayamıyorum". Bunun neden olduğunu ve bunu nasıl düzeltebileceğimi bilen var mı? Teşekkürler.NSTimer'i geçersiz kıldıktan sonra "nasıl doğrulanır"?
cevap
Geçersiz kılınmış zamanlayıcı kullanamazsınız. Elma Dokümanlar itibaren
:
bir çalışma döngüsü planlanan sonra, belirtilen aralıklarla zamanlayıcı yangınları o geçersiz kadar. Tekrarlamayan bir zamanlayıcı, 'un kendisini patladıktan hemen sonra geçersiz kılar. Ancak, yinelenen bir zamanlayıcı için, , invalidate yöntemini çağırarak zamanlayıcı nesnesini geçersiz kılmanız gerekir. Bu yöntem çağrıldığında, zamanlayıcının geçerli çalışma döngüsünden kaldırılması istenir; Sonuç olarak, zamanlayıcının yüklendiği aynı iş parçacığı için her zaman geçerli yöntemini çağırmalısınız. Zamanlayıcı geçersiz kılındığında, artık çalışma döngüsünü etkilemeyecek şekilde devre dışı bırakır. Daha sonra, çalışma döngüsü zamanlayıcısını kaldırır ve serbest bırakır, ya geçersiz kılma yönteminin hemen öncesinde ya da bazı sonraki noktasında. Geçersiz kılındığında, zamanlayıcı nesneleri yeniden kullanılamaz.
NSTimer'i geçersiz kıldığınızda, bir daha kullanmamanız gerekir. Bunun yerine, yeni bir zamanlayıcı örneği oluşturun ve bu örneği NSRunLoop'un addTimer yöntemine eklemek için kullanın. Şahsen NSTimer'in planlıTimerWithTimeInterval öğesini çağırmayı tercih ediyorum çünkü her şey tek bir çekimde yapıyor. NSTimer docs itibaren
:
bu yöntem geçerli çalıştırmak döngüden zamanlayıcı kaldırılmasını isteyen çağrılması; Sonuç olarak, zamanlayıcının yüklendiği aynı iş parçacığından her zaman geçersiz kılma yöntemini çağırmalısınız. geçersiz kılma zamanlayıcı, hemen döngüsünü etkilemeyecek şekilde devre dışı bırakır. Daha sonra çalışma döngüsü, zaman aşımını kaldırır ve serbest bırakır, invalidate yöntemi geri dönmeden önce veya daha sonraki bir noktadan önce sadece . Bir kez geçersiz kılınmış, zamanlayıcı nesneler yeniden kullanılamaz.
Doğru, Bilmiyordum ... Teşekkürler! – TheAmateurProgrammer
- 1. Dosya nasıl imzalanır ve sonra doğrulanır?
- 2. Scss nasıl doğrulanır
- 3. php ile nasıl xml doğrulanır
- 4. Yeni hesaplar nasıl doğrulanır
- 5. AB yanıtları nasıl doğrulanır?
- 6. JQuery kullanarak Ckeditor nasıl doğrulanır
- 7. IP adresi nasıl doğrulanır? C#
- 8. JMeter'de JSON Yanıtı nasıl doğrulanır?
- 9. Form doldurulduğunda php nasıl doğrulanır?
- 10. Rayları kullanarak reCAPTCHA nasıl doğrulanır?
- 11. İlişkili model kimliği nasıl doğrulanır?
- 12. Normal ifadeyle javadaki URL nasıl doğrulanır?
- 13. php - düzenli ifadenin kendisi nasıl doğrulanır?
- 14. TextInput değerlerini yerel olarak yanıtlama nasıl doğrulanır?
- 15. Laravel JsValidator Dizi giriş alanları nasıl doğrulanır?
- 16. Kullanıcı girişi komut satırı nasıl doğrulanır?
- 17. Sayaç, selenyum kullanılarak artırılıyor nasıl doğrulanır
- 18. Parametreler nasıl işlevsel bir şekilde doğrulanır?
- 19. VB komut dosyasıyla dosya mevcutsa nasıl doğrulanır?
- 20. ajax post kullanırken dinamik tablo nasıl doğrulanır?
- 21. Düzenlenebilir bir veri tabanındaki sütun nasıl doğrulanır?
- 22. ajax tarafından iki şifre alanı nasıl doğrulanır?
- 23. .NET'te bir DLL Dijital İmzası Nasıl Doğrulanır?
- 24. jQuery Doğrulama: Biçimsiz bir öğe nasıl doğrulanır?
- 25. Joi kullanarak nesne dizisi nasıl doğrulanır?
- 26. ios içinde xmpp akışı nasıl doğrulanır
- 27. JSON ile JSON Nasıl Doğrulanır JSON
- 28. Nesne-c'deki ağ bağlantısı nasıl doğrulanır?
- 29. Paypal'ın başarılı geri dönüşü nasıl doğrulanır?
- 30. Rails'te benzersizliği ve allow_blank kapsamı nasıl doğrulanır?
İlginç bir şekilde NSRunLoop addTimer var, ancak zamanlayıcı onu geçersiz kılmadan ateşlemeyi durdurmada yararlı olabilecek bir removeTimer yok. Zamanlayıcı yaratmanın limanın yaratılmasından daha ucuz olması, böylelikle elmanın bu api'yi eklememesi zahmetine girmemesi gerekir. –