2011-02-16 20 views
1

私はObjective-CでXcodeを使用してプログラムを作成しています。私のプログラムは次のようにファイルを作成します:Objective-Cの作業ディレクトリとXcode:デバッグモードと実行可能ファイル

[@"" writeToFile:fileName atomically:YES encoding:NSUTF8StringEncoding error:NULL]; 

実行可能ファイルと同じディレクトリにファイルを作成します。 Xcodeからプログラムを実行すると、期待どおりファイルがデバッグディレクトリに作成されます。

ただし、.appファイルを実行すると、ファイルはルートディレクトリに作成されます。 .appファイルが置かれているディレクトリにファイルを作成するにはどうしたらよいですか?

ありがとうございます。

EDIT:これは

EDIT2 MacOSのアプリケーションです:まあ、私がの.appディレクトリに書き込みをしてはならないと思われます。ありがとうbbumとポールR.それを行う適切な方法は何ですか?具体的には、私がやっていることは次のとおりです。ユーザーがアプリケーションのボタンをクリックするたびに、シリアルポートに接続されたハードウェアが新しいファイルに書き込まれるバンチデータを送信します。これは、アプリケーションの実行中に何回も実行される可能性があるため、多数のファイルが作成される可能性があります。私はそれらをすべて同じフォルダに作成したいと思います。

+1

これは、実質的には、http://stackoverflow.com/questions/5007073/noob-where-can-i-store-my-applications-files/5007143#5007143 – bbum

答えて

2

あなたはが、これは(open経由例えばファインダー、ターミナル()、Xcodeの、GDB、サードパーティ製のユーティリティを起動するために使用されたものの方法によって異なりますよう、アプリケーションの初期作業ディレクトリについての仮定をしてはいけません、など)。適切なAPIを使用して、一時ファイルやユーザー固有のファイルなどを格納する適切なディレクトリを探す必要があります。これは決してアプリケーションのバンドルの中にあってはならず、最初の作業ディレクトリからの相対パスでは決してありません。

+0

ありがとう、あなたはAPIのための何か提案がありますか、私は何を検索すべきですか? – user620139

+1

@ user620139:ファイルが何であるかによって異なりますが、 'NSSearchPathDirectory'はヘルプになるはずです:http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_DataTypes/Reference/ reference.html%23 // apple_ref/c/tdef/NSSearchPathDirectory – mipadi

1

あなたはではありません。は、ファイルを.appラッパーの内側に作成します。つまり、は決してです。現在のユーザーがYourApp.appラッパーへの書き込みアクセス権を持たない場所にアプリケーションを簡単にインストールすることができます。

(たとえば、私のメインユーザアカウントは管理者ではなく、すべてのアプリケーションは管理者専用の書き込み専用にインストールされています。アプリラッパーに書き込めないためにアプリが動作しない場合、ゴミ箱)

See this questionファイルを保存する場所の概要を示します。ファイルの役割によって異なります。

+0

の欺瞞です。 .appラッパー? – user620139

+0

私は彼がアプリケーション*バンドルを意味すると推測しています* –

+0

まさに;あなたのアプリが 'Foo'と呼ばれ、' Foo.app'にビルドされている場合、そのディレクトリは「アプリラッパー」であり、アプリケーションがユーザシステムにインストールされると**は何も書き込まれません**。 – bbum

関連する問題