如何在Cocoa或Xcode编程中使用主菜单nib (xib)文件设置环境变量



我是Cocoa编程和Xcode的新手。我想知道如何使用主菜单设置(或设置环境变量)。Nib(或.xib)文件。我在主函数中有其他人的代码,像这样:

[NSApplication sharedApplication];
[NSBundle loadNibNamed:@"MainMenu" owner: NSApp];

第二行之后,它可以得到一个环境变量:

if (!getenv("R_HOME")) {
    fprintf(stderr, "R_HOME is not set.n");
    return -1;
}

我想知道如何构建一个nib(或xib)文件,例如,MainMenu。xib,在Xcode 3的最新版本,以便它可以用来设置。我所做的一件事是编写setenv时不使用nib文件:

setenv("R_HOME", "/Library/Frameworks/R.framework/Resources", 1)

但是,当我通过双击xxx来执行Cocoa GUI编程时,这不起作用。应用程序,虽然当我执行程序的命令行版本工作。因此,我似乎需要一种在Mac GUI应用程序启动时设置环境变量的方法。我已经看到了设置环境变量的其他方法,但我想知道如何使用nib(或xib)文件设置环境变量,并通过使用NSBundle的loadNibNamed方法加载它。

我想知道如何构建一个nib(或xib)文件,例如,MainMenu。xib,在Xcode 3的最新版本,以便它可以用来setenv .

Nib文件与环境变量没有任何关系。它们不包含任何代码,除了提供用于实例化由应用程序代码提供的类的数据外,它们对程序没有任何影响。我想你可以写一个设置环境变量的类,然后使用nib来实例化那个类,但是这样做和在你的代码中实例化这个类没有什么区别。

我所做的一件事是在不使用笔尖的情况下编写setv文件:……但是,当我执行Cocoa GUI时,这不起作用编程通过双击xxx。应用程序,虽然它工作,当我执行程序的命令行版本

你怎么知道它不起作用?您是在代码中调用getenv()来检查R_HOME的值,还是在终端中使用env这样的命令?如果是后者,则说明您看到的环境与设置变量的环境不同。

所以,我似乎需要一种方法来设置环境变量,当启动一个Mac GUI应用程序。

你想完成什么?您似乎不太可能为您自己的程序设置一个环境变量—它已经知道这个值,因此将环境排除在外似乎毫无意义。您正在尝试与另一个程序通信吗?

我已经看到了设置环境变量的其他方法,但我想了解如何使用nib(或xib)文件设置环境变量;并通过使用NSBundle的loadNibNamed方法加载它。

再次强调,nib文件和环境变量之间没有交集。如果你希望能够修改您的应用程序的行为基于一些外部变量,您可以设置环境变量.login文件中,这些值应该被应用程序可读性。也许一个更好的解决方案是使用默认系统——应用程序可以读取和写入值通过NSUserDefaults默认系统中,你可以读和写这些值使用defaults命令在命令行。

环境变量通常与方案中的选项一起设置。

在"产品"菜单中选择"编辑方案"并选择所需的目标。现在在右侧选择"参数"选项卡。

在"参数"选项卡上,您可以设置命令行参数和环境变量,以便传递给运行的应用程序。

要在你的可分发应用程序中设置环境变量,这样它们甚至会为用户设置(Xcode只影响你的调试运行),在你的应用程序的Info.plist中设置LSEnvironment属性。

相关内容

  • 没有找到相关文章

最新更新