1

这是一个非常简单的问题。我在与 Cocoa 应用程序相同的文件夹中有一个脚本。我似乎无法为setLaunchPathfor正确设置路径NSTask。请帮忙。

我有一个名为 Project 的文件夹。在其中,存在多个文件夹,但我们只关心两个:Classes(Cocoa 应用程序的源文件在这里)和 Ruby(这是一个 ruby​​ 服务器文件夹)。我想打电话Ruby/script/server。我认为这会是类似的东西,./Ruby/script/server或者Ruby/script/server两者都是错误的。

谢谢。

编辑:我想我实际上要问的是是否有一种方法可以使用特殊字符或快捷方式访问源文件或项目所在的文件夹,因为默认情况下它会进入/tmp文件夹。

4

1 回答 1

3

应用程序中的当前目录(在 unix 意义上)不能保证是任何东西。应用程序本身的路径可以通过获取主应用程序包来获得

NSBundle*mainBundle=[NSBundle mainBundle];

然后得到它的路径

NSString*path=[mainBundle bundlePath];

但是请不要这样做;如果没有在此处和此处放置文件的额外说明,您将无法分发您的应用程序。相反,将您的 Ruby 代码放入yourApp.app/Contents/Resources/. 这可以通过在 XCode 中包含 Ruby 代码并确保将其设置为复制到应用程序中来完成。该Resources目录下的文件可以通过以下方式获取:

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

要了解有关 bundle 结构的更多信息,请阅读Bundle Programming Guide

于 2010-07-09T02:15:31.507 回答