2011-12-24 11 views
2

私はCocoaプログラミングとXcodeの両方を初めて使用しています。私はMainMenu.nib(または.xib)ファイルを使用してsetenv(または環境変数を設定)する方法が不思議です。私はこのような主な機能で他の誰かのコードがあります。二行目の後にCocoaまたはXcodeプログラミングでmainmenu nib(xib)ファイルを使用してsetenv(環境変数を設定)する方法は?

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

を、それは環境変数を取得することができます

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

を私は1つのペン先を構築することができる方法を知りたい(またはxib)ファイル(例:MainMenu.xib)をXcode 3の最新バージョンにインストールし、setenvに使用できるようにします。私は、プログラムの実行時に、私はそれが働いていたが、ダブルxxx.appをクリックすることにより、ココアGUIプログラミングを実行するとき

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

しかし、これは動作しませんでした。私がやったことの一つは、nibファイルを使用せずのsetenvをコーディングしましたコマンドラインバージョン。だから、Mac GUIアプリケーションを起動するときに環境変数を設定する方法が必要なようです。私は環境変数を設定する他の方法を見てきましたが、nib(またはxib)ファイルを使って環境変数を設定する方法と、NSBundleのloadNibNamedメソッドを使って環境変数をロードする方法を知りたいと思います。

答えて

2

それは のsetenvに使用することができるように、私はXcodeの3の最新バージョンでは、例えば、 MainMenu.xib、1は、ペン先(またはXIB)ファイルを作成する方法を知りたいです。

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

私がやったことの一つは ファイルをペン先を使用せずのsetenvをコーディングしました:...しかし、私はそれが時に働いていたものの、xxx.appをダブルクリックでココアGUI プログラミングを実行する場合、これは動作しませんでしたI は、プログラムのコマンドラインバージョンを実行します。

どうしたのですか?あなたのコードでR_HOMEの値をチェックするgetenv()を呼び出しているのですか、または端末にenvのようなコマンドを使用していますか?後者の場合、変数が設定されているのと同じ環境を見ていません。

だから、 Mac GUIアプリケーションが起動されたときに、環境変数を設定する方法が必要なようです。

あなたは何を達成しようとしていますか?あなた自身のプログラムの使用のために環境変数を設定することはまずありません。すでにその価値を知っているので、環境を外出することは意味がないようです。あなたは別のプログラムとコミュニケーションしようとしていますか?

1は、ペン先(またはXIB)を使用して環境変数を設定することができます方法を知っている私は、環境変数を設定する他の方法を見てきましたが、私は したいファイル、 とNSBundleのloadNibNamedメソッドを使用して、それをロードすることもできます。

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

+0

私はあなたがすべてのポイントについて正しいと思います。私は自分のコードをデバッグしているときに間違いました。 setenvとgetenvは働いた。 –

2

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

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

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

+0

ありがとうございました。 –

0

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

関連する問題