2

私はCocoaプログラミングとXcodeの両方に不慣れです。MainMenu.nib(または.xib)ファイルを使用してどのようにsetenv(または環境変数を設定)できるのか疑問に思っています。私はこのようなメイン関数に他の誰かのコードを持っています:

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

2行目以降は、環境変数を取得できます。

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

Xcode 3の最新バージョンでnib(またはxib)ファイル(MainMenu.xibなど)を作成して、setenvに使用できるようにする方法を知りたいです。私がしたことの1つは、nibファイルを使用せずにsetenvをコーディングすることでした。

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

しかし、xxx.appをダブルクリックしてCocoa GUIプログラミングを実行すると、プログラムのコマンドラインバージョンを実行すると機能しましたが、これは機能しませんでした。そのため、MacGUIアプリケーションの起動時に環境変数を設定する方法が必要なようです。環境変数を設定する他の方法を見てきましたが、nib(またはxib)ファイルを使用し、NSBundleのloadNibNamedメソッドを使用して環境変数をロードする方法を知りたいです。

4

3 に答える 3

2

環境変数は通常、スキームのオプションとともに設定されます。

「製品」メニューから「スキームの編集」を選択し、目的のターゲットを選択します。次に、右側で[引数]タブを選択します。

[引数]タブでは、実行中のアプリケーションに渡されるコマンドラインパラメータと環境変数を設定できます。

于 2011-12-24T02:30:43.937 に答える
2

Xcode 3の最新バージョンでnib(またはxib)ファイル(MainMenu.xibなど)を作成して、setenvに使用できるようにする方法を知りたいです。

Nibファイルは環境変数とは何の関係もありません。これらにはコードが含まれておらず、アプリケーションのコードによって提供されるクラスをインスタンス化するために使用されるデータを提供する以外は、プログラムに影響を与えません。環境変数を設定するクラスを作成し、ペン先を使用してそのクラスをインスタンス化できると思いますが、それを実行することと、コードでクラスをインスタンス化することとの間に違いはありません。

私がしたことの1つは、nibファイルを使用せずにsetenvをコーディングすることでした:...しかし、プログラムのコマンドラインバージョンを実行すると機能しましたが、xxx.appをダブルクリックしてCocoaGUIプログラミングを実行すると機能しませんでした。

それが機能しなかったことをどうやって知っていますか?getenv()を呼び出して、コード内のR_HOMEの値を確認していますか、それともenvターミナルのようなコマンドを使用していますか?後者の場合、変数が設定されたのと同じ環境を見ているわけではありません。

そのため、MacGUIアプリケーションの起動時に環境変数を設定する方法が必要なようです。

何を達成しようとしていますか?自分のプログラムで使用するために環境変数を設定する可能性は低いようです。すでにその値を知っているので、環境を外に出すのは無意味に思えます。別のプログラムと通信しようとしていますか?

環境変数を設定する他の方法を見てきましたが、nib(またはxib)ファイルを使用し、NSBundleのloadNibNamedメソッドを使用して環境変数をロードする方法を知りたいです。

繰り返しますが、nibファイルと環境変数の間に実際には交差点はありません。外部変数に基づいてアプリの動作を変更できるようにする場合は、.loginファイルで環境変数を設定できます。これらの値は、アプリで読み取り可能である必要があります。おそらく、より良い解決策はデフォルトシステムを使用することです。アプリはNSUserDefaultsを介してデフォルトシステムで値を読み書きでき、コマンドラインでコマンドを使用して同じ値を読み書きできますdefaults

于 2011-12-24T03:11:00.563 に答える
0

配布可能なアプリケーションで環境変数を設定して、ユーザーに対しても設定されるようにするには(Xcodeはデバッグの実行にのみ影響します)、アプリのInfo.plistでプロパティを設定します。LSEnvironment

于 2011-12-25T19:33:57.353 に答える