Paramétrer une périodicité & NSTimer

ClicCoolClicCool Membre
21:22 modifié dans API AppKit #1
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 ?

Réponses

  • 21:22 modifié #2
    Salut,

    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
  • ClicCoolClicCool Membre
    21:22 modifié #3
    C'est une idée Michaël,

    ç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.
  • cbrandtcbrandt Membre
    21:22 modifié #4
    on peut aussi utiliser performSelector:withObject:afterDelay: à  chaque début ou fin de traitement du code "timé"...

  • ClicCoolClicCool Membre
    21:22 modifié #5
    dans 1109325063:

    on peut aussi utiliser performSelector:withObject:afterDelay: à  chaque début ou fin de traitement du code "timé"...


    Bon sang c'est vrai ça 

    Je sous utilise dramatiquement cette puissante méthode  :o

    On en est donc à  4 façon de gérer une périodicité variable :)
Connectez-vous ou Inscrivez-vous pour répondre.