Bonjour
Je me suis lancer dans la programmation objective-c ce week-end, et je but sur un problème. Je précise que j'ai déjà fait de la programmation, mais en Java. Ce qui rend l'apprentissage de Objective-c facile, mais je passe surement a côté de subtilité du code c.
Le programme que je développe est tout bête, il calcule une série de valeur grâce à Runge-Kutta d'ordre 4. Puis il les enregistre dans un fichier texte sur mon bureau. Jusque là j'ai pas trop de souci, mis à part un seul.
Mon but est d'utiliser GNUPlot. Je l'ai installé car je sais utiliser Octave, et MatLab. Je voudrai voir si en programmant dans un langage natif, c'est plus rapide que d'interpréter des fichiers comme le font Matlab et Octave.
Je ne sais pas du tous comment lancer GNUPlot, et lui fournir les données. Je n'arrive pas à trouver quelque chose de convainquant sur internet. Qu'es ce que je doit faire ? Utiliser une ligne de commande ? Dans ce cas, quel objet permet de communiquer avec le Shell ?
Je précise que je ne me suis pas encore penché sur les tableaux en Objective-c ce qui ne vas pas tarder.
P.S. : l'autre problème rencontré est plus simple.
En objective-c j'ai découvert qu'on pouvait créer des fonction avec un liste d'argment variable ex :
+(NSString*) concatener: (NSString*) first, ...
Pour ça, pas de problème je trouve plein de code sur internet, qui ont tous l'air de fonctionner, mais aucun ne fonctionne.
En regardant ce qui se passe avec le débugger, j'ai vue que :
Pour une liste de deux argument, quand mon va_arg(maliste, id) est appelé une troisième fois, il me sort une valeur "nil" mais avec une adresse.
Du coup, ma condition de sortie de la boucle n'es pas validé, et me provoque une erreur quand on repasse dans cette boucle.
Voici le code que j'utilise pour cette fonction :
Merci de vos réponse que j'espère nombreuses.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 + (NSString*) concatenerPlusieurs:(NSString*) first, ...{ NSString*result = @""; NSString*eachArg; va_list alist; if(first) { eachArg = [NSString stringWithString:first]; va_start(alist, first); do{ if([eachArg class]==[NSString class]) result= [NSString stringWithFormat:@"%@\n%@", result, eachArg]; eachArg = va_arg(alist, id);//j'ai déjà essayé de remplacer id par NSString, mais sans succès. }while (eachArg) ; va_end(alist); } return result; }
Partager