2010-07-09 6 views
1

C'est une question très simple. J'ai un script dans le même dossier que l'application Cocoa. Je ne peux pas sembler définir le chemin correctement pour setLaunchPath pour NSTask. Aidez-moi, s'il vous plaît.NSTask setLaunchPath Objectif-C Cocca

J'ai un dossier appelé Projet. A l'intérieur, il existe plusieurs dossiers mais seulement deux nous intéressent: Classes (les fichiers source pour l'application Cocoa sont ici) et Ruby (qui est un dossier de serveur ruby). J'essaie d'appeler Ruby/script/server. Je supposais que ce serait quelque chose comme ou Ruby/script/server mais les deux sont faux.

Merci.

EDIT: Je suppose que ce que je demande réellement est s'il y a un moyen d'accéder au dossier où les fichiers source ou le projet est en utilisant un caractère spécial ou un raccourci parce que par défaut il va au dossier /tmp.

Répondre

3

Le répertoire courant (au sens unix) d'une application n'est pas garanti. Le chemin vers l'application elle-même peut être obtenue en obtenant le principal paquet d'applications par

NSBundle*mainBundle=[NSBundle mainBundle]; 

puis obtenir son chemin

NSString*path=[mainBundle bundlePath]; 

Cependant s'il vous plaît ne pas faire cela; vous ne serez pas en mesure de distribuer votre application sans instructions supplémentaires de mettre des fichiers ici et là. Au lieu de cela, mettez votre code Ruby à l'intérieur yourApp.app/Contents/Resources/. Cela peut être fait en incluant le code Ruby dans le code X, et en s'assurant qu'il est configuré pour être copié dans l'application. Les fichiers dans ce répertoire Resources peuvent être obtenus comme suit:

NSString*path=[mainBundle pathForResource:@"rubyServer" ofType:@"rb"]; 

Pour en savoir plus sur la structure de paquet, lisez Bundle Programming Guide.

+0

Merci beaucoup! – hassaanm

Questions connexes