Timers gourmands.
muqaddar
Administrateur
J'utilise 2 timers dans mon appli qui vérifient un truc toutes les 10 secondes et un autre qui crée un affichage à 25i/s...
J'ai l'impression qu'au moment où ils se déclenchent tous les X secondes, ça fait ramer un peu mon appli graphiquement.
C'est normal ? C'est gourmand un timer par défaut ?Â
J'ajoute que pour l'affichage à 25i/s, j'ai mis toutes les images en cache pour éviter les accès disque, et que ça n'a rien changé.
J'ai l'impression qu'au moment où ils se déclenchent tous les X secondes, ça fait ramer un peu mon appli graphiquement.
C'est normal ? C'est gourmand un timer par défaut ?Â
J'ajoute que pour l'affichage à 25i/s, j'ai mis toutes les images en cache pour éviter les accès disque, et que ça n'a rien changé.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Je crois pas, c'est juste une condition ajoutée dans le run-loop
Et puis si c'était le timer lui même qui te ralentissait, ça ralentirait l'appli globalement à chaque tour du runLoop et pas juste quand il se déclenche.
J'ai l'impression que c'est quand même l'appel de ta méthode qui ralenti ton soft.
Je crois que t'appèle AS avec NSAS auquel tu transmet le fichier texte de ton script non ?
T'aurait pas moyen d'utiliser à la place un script (ou des portions de script) compilé ?
J'avais essayé d'appeler des .script mais ça marchait pas.
Si tu as des pistes...
Récupères les éventuels résultats avec un NSPipe etc ... non ?
[tt]
NSTask *maTask;
[maTask setLaunchPath:NSBundle mainBundle] pathForResource:@"CountApp" ofType:@"scpt";
[maTask setArguments:[NSArray arrayWithObjects:@"",nil]];
[maTask launch];
[/tt]
J'ai commencé comme ça, maintenant je vais regarder du côté de NSPipe car je dois récupérer le résultat de mon AS.
- (NSFileHandle *)fileHandleForWriting
Y'a personne qu'à un exemple sous la main ?
J'ai rien trouvé dans les exemples des developpers tools.
Je suis à la rue.
Comment je récupère un bête "return toto" dans un fichier compilé AppleScript .script depuis un NSTask et NSPipe ?
Il faut que tu regarde ds le fichier OCPGraphique, les methodes -init -sendData et -gotData: . Normalement, il ya les reponses a toutes tes questions. Si t'as probleme, appelle moi.
[Fichier joint supprimé par l'administrateur]
Je voulais savoir, j'ai besoin du fileHandleForReading ou fileHandleForWrinting pour récupérer le texte de retour de mon applescript ?
Je pige pas trop la doc Apple de ce côté là ...
[edit]
Voilan http://www.objective-cocoa.org/forum/index.php?topic=277.0.
Dis, t'as pas déjà posé la question ??
C'est quoi le rapport avec ma question précédente sur fileHandle fouf ?
Tu crés un NSPipe vers la NSTask :
tu utilise fileHandleForReading pour récupérer le NSFileHandle correspondant a la lecture
et tu t'enregistre comme observateur pour la notif NSFileHandleReadCompletionNotification
Enfin, tu implémente la méthode gotData: en fonction du type de retour de ton executable auxiliaire.
J'ai répondu à la question ?
Quand je lance l'appli, je me retrouve avec avec SIGTRAP à cause de la ligne du setLaunchPath.
T'as uen idée ?
Tu veux pas écrire ça sur 2 lignes, juste pour voir si ton path est bon ?
on sait jamais
path : /Users/oxitan/Cocoa/Exemples/animateAlphaProject2/build/alphaProject.app/Contents/Resources/monScript.scpt
donc le path est bon.
Mais je n'ai pas de setArguments en revanche (qui prend un array).
Y'en a besoin ds mon cas ?
Sinon il em dit ça : <NSInvalidArgumentException> launch path not accessible
?
Il faut que tu ailles dans le dossier de ton AS et que tu tapes la commande ls -al monScript.scpt
normalement les autorisations doivent etre un truc du genre :
-r/x////// ou les / sont des valeurs qui ne sont pas intéréssantes pour ton cas.
Il est aussi possible que ton AS ne soit pas enregistré sous le format Application et c'est pour ca qu'il ne peut pas l'atteindre.
Non, c'est une application par un truc a ligne de commande.
Bon courage.
Essaies donc de sortir ton script du bundle.
T'as peut-être un problème d'autorisation d'accès.
Ton Bindle appartient à ton appli qui tourne déjà ...
[grilled] par le chevelu. On m'avait pourtant dit que La valeur n'attend pas la longueur de cheveux !
J'ai mis les droits au max en plus...
Un executable .app ajouté ds le bundle avec les droits nornaux.
Le dernier je l'avais pas ajouté ds xcode...
Merci à vous ! je vais continuer.
(j'ai mis un NSLog dedans)
Voilà mon code :
Vs avez une idée ?
par ailleurs, faire un release sur tache alors qu'elle n'est peut-être pas terminée...
ah oui tiens, une piste possible ça.
Ah ? une faute de typo sur un code copié/coller ... c'est pas rare ça non plus.
Mais le compilo aurait alors dû te le dire. ??