2012-01-15 19 views
24

あなたが作成したiOSアプリケーションごとにXcode 4ディレクトリをどのように配置するかに関する簡単な質問/意見。iOSプロジェクトのディレクトリ組織

個人的には、私はまだ/ Fonts、/ Images、/ Iconsなどのサブディレクトリを含む/ Resourcesというディレクトリを追加します。オプションを使用して、「宛先グループのフォルダにアイテムをコピーします。新しいリソースを追加する必要がある場合は、プロジェクトディレクトリのfinder.appの適切なディレクトリに追加するだけです(イメージの場合はMyProject/Resources/Images/Foo.pngに追加します)。私のグループ「画像」をXcodeに入れてそこからファイルを追加してください。

また...

を私は一度同期してXcodeとファインダーを維持するための「フォルダの参照」オプションを使用しようとしましたが、IBは、画像を取得することができませんでした、あなたのicon.pngのとDefault.pngでありますあなたのプロジェクトのルート? Xcode 4を使用すると(プロジェクト情報>要約で)、Xcode 4をそこに追加すると、...そこに置いているのかと疑問に思っています。

また、フォトショップファイルやプロジェクトに関連するその他のファイルについては、(.xcodeprojファイルを使用して)ルートディレクトリにも入れますか?

+0

私はそれがあなたがそれを保存しなければならないか、ディレクトリ構造のためのガイドラインやルールには全く依存していると思います。 – rishi

+0

私はそれについて "厳しい"規則がないことを知っています、私は人々がどのように彼らのプロジェクトを構築するのだろうかと思っています:) – allaire

+1

あなたもiphone sdkフォーラムのスレッドを参照することができます - http://www.iphonedevsdk.com /forum/iphone-sdk-development/6457-xcode-folder-directories.html – rishi

答えて

25

すべてのNSLocalizedStringリファレンスを抽出するためにibtoolを実行すると文字列のローカライズが簡単になるため、.mファイルと.hファイルと.xibファイルをすべて1つのフォルダに保存することをお勧めします。プロジェクトをリファクタリングするときにXcode内の仮想フォルダ構造。

サードパーティのライブラリまたはフレームワークを別のフォルダに保存して、独自のコードと混同しないようにします。

Xcode自体では、これらのクラスファイルをViews、Controllers、Model、Nibs(およびサードパーティ製のライブラリのライブラリ)という別々の仮想フォルダに整理します。大規模なプロジェクトの場合は、各コンポーネントのフォルダに分割し、ビュー、コントローラなどに分割しますが、それも物理フォルダではなく仮想フォルダだけです。

リソースを別の物理フォルダに保存することは、ディスク上で簡単に参照できるようにするための良い考えです。これらを画像、音、xmlなどに分割することは意味があります.Xcodeでは、これらをコンポーネントやカテゴリ(インターフェース、コンテンツなど)で仮想サブフォルダに分割したい場合がありますが、プロジェクトが成長するにつれて、フォルダ構造をリファクタリングするのが難しくなります。

誤って2つの画像に同じ名前を付けることを避けるため、すべての画像を同じフォルダに保存することをお勧めします。同じ名前の2つのイメージを別の場所から読み込んだ場合、Xcodeは警告しませんが、アプリケーションをビルドすると、ランダムに選択されたどちらか一方だけで終了します。

Default.pngとIcon.pngをルートに置いておく必要はありません(またはDefault.pngとIcon.pngと呼ぶこともあります)が、標準ファイルが期待通りでないとXcodeが混乱することがあります。

あなたが何をしていても、画像を読み込むときに青のフォルダ参照を使用しないでください。imageNamed:またはInterface Builderでコード内からアクセスできません。代わりに、黄色の仮想フォルダ参照を使用します。基本的に青のフォルダは、アプリケーションのビルド時に実際のフォルダとしてアプリケーションバンドルにコピーされますが、黄色のフォルダは無視され、その内容はアプリケーションバンドルのルートに直接移動します。青色のフォルダのコンテンツにアクセスするには、読み込んだときにパスに青のフォルダ名を含める必要があります。

NSString *path = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"png" inDirectory:@"nameOfBlueFolderInXcode"]; 
UIImage *image = [UIImage imageWithContentsOfFile:path]; 
+1

「あなたの.mと.hと.xibファイルを1つのフォルダ "です。それは私のsvnリポジトリに構造がないナットを運転するだろう!しかし、彼自身のそれぞれに。 – chown

+0

もしあなたがsvnを使用しているなら、svnでホストされているプロジェクトのフォルダ間でファイルを移動するのは辛いことがわかります。カスタムUIButtonサブクラスを、class/somecomponent/views /からclass/shared/viewsに移動する作業の量は、リファクタリングプロセスの一環としてローカルリンクとsvnリポジトリを壊さずにリファクタリングを行います。良い練習をするのは難しいアイホーです。 –

+0

また、ibtoolを使用してlocalizable.stringsファイルを生成することにも注意してください。 ibtoolは、コマンドラインツールで、フォルダパスを使用して、内部のすべてのクラスから単一の文字列ファイルを生成します。サブフォルダは検索されません。そのため、クラスがすべて1つのフォルダに含まれていない場合は、ローカリゼーションが多くなります。 –

9

最近私はこれについてたくさん考えていました。

私はこれが成長のための良い構造を与え、ほとんどのものに合理的な家を提供すると思います。もちろん、必要に応じて追加のサブフォルダ(例:Assets/Fonts)を追加します。構造のための私の完全な論理的根拠については、this blog postをチェックしてください。

Icon.pngDefault.pngのようなものは、Xcodeがそれほど気にならないようにプロジェクトのルートに置いていますが、そうでない場合はきちんと整理されています。私は対応する.m.h.xibのファイルをまとめて保存していますが、ビューコントローラを論理的にサブフォルダに分割します(例:InitialSettings)。

関連する問題