Paramétrer une périodicité & NSTimer
ClicCool
Membre
Bonjour à tous
Comment faire pour qu'un réglage de périodicité fait dans les prefs d'une appli prenne effet immédiatement ?
Par exemple pour une périodicité allant de 5 sec à 30 min.:
1°) Vaut-il mieux invalider le timer chaque fois et en lancer un autre ? sachant qu'à ma connaissance un NSTimer, une fois installé dans le runLoop, ne peut changer de périodicité. Et aussi qu'un NSTimer invalidé n'est jamais désaloué et va continué de trainer, inactif, dans notre cher run-loop.
2°) Vaut-il mieux régler le NSTimer sur la période la plus courte et le brancher sur une méthode qui lance la véritable action toutes les n fois, en fonction des réglages des prefs. Sachant alors qu'on doit se limiter à des multiples de la période la plus courte pour les réglages.
3°) Vaut-il mieux que vous me donnier une 3ème idée que je n'ai pas ? Sachant que l'échange des idées est toujours enrichissante ?
Comment faire pour qu'un réglage de périodicité fait dans les prefs d'une appli prenne effet immédiatement ?
Par exemple pour une périodicité allant de 5 sec à 30 min.:
1°) Vaut-il mieux invalider le timer chaque fois et en lancer un autre ? sachant qu'à ma connaissance un NSTimer, une fois installé dans le runLoop, ne peut changer de périodicité. Et aussi qu'un NSTimer invalidé n'est jamais désaloué et va continué de trainer, inactif, dans notre cher run-loop.
2°) Vaut-il mieux régler le NSTimer sur la période la plus courte et le brancher sur une méthode qui lance la véritable action toutes les n fois, en fonction des réglages des prefs. Sachant alors qu'on doit se limiter à des multiples de la période la plus courte pour les réglages.
3°) Vaut-il mieux que vous me donnier une 3ème idée que je n'ai pas ? Sachant que l'échange des idées est toujours enrichissante ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Effectivement la 2 est trop facile, moi je dirais pourquoi ne pas essayer de faire sans timer ? Je m'explique, une fois sur un browser commercial on m'a demandé de faire s'afficher un message de réclam toutes les 30 minutes. Je n'ai pas mis de timer mais un petit if (userEnregistrer && dateNouvelle > dateaAncienne +30 ) dans le code de fin de chargement de page... Bon sur ce, je file faire du ski
ça m'oblige à créer un thread pour la boucle si je ne veux pas que mon appli reste figée. Mais en effet comme ça ferait des sortes de timer perso.
Mais surtout mon timer lance des requètes en asynchrone dont le résultat doit être récupéré dans le thread l'ayant lancé qui ne doit donc pas être bloqué dans une boucle.
Mais voilà une 3°) idée donc: Se faire un Timer Perso, peut être en tirant parti des iddle time ? J'ai jamais fait ça avec Cocoa mais ça doit -être faisable ? sous powerPlant on utilisait des onIddle ou truc comme ça.
Bon sang c'est vrai ça
Je sous utilise dramatiquement cette puissante méthode
On en est donc à 4 façon de gérer une périodicité variable