2012-01-15 5 views
24

Просто быстрый вопрос/мнение о том, как вы упорядочиваете каталог Xcode 4 для каждого созданного вами приложения iOS.Каталог проектов iOS

Лично я все еще добавляю каталог под названием/Resources, который содержит подкаталоги, такие как/Fonts,/Images,/Icons и т. Д. Я использую опцию «Скопировать элементы в папку целевой группы (при необходимости)». Если мне нужно добавить новый ressource, я просто добавлю его в нужный каталог в finder.app в моей директории проекта (т. Е. Если это изображение, я добавляю его в MyProject/Resources/Images/Foo.png), а затем просто перейдите в мою группу «Изображения» в Xcode и добавьте туда файл.

Я однажды попытался использовать «ссылки папки» вариант, чтобы сохранить Xcode и Finder в синхронизации, но IB не удалось получить изображения ...

Кроме того, ваш Icon.png и Default.png в корень вашего проекта? (т. е. с файлом .xcodeproj?) Когда вы используете Xcode 4 (в информации о проекте> сводка), они добавляют их туда ... Интересно, сохраните ли вы их там. Потому что лично я всегда предпочитаю иметь все мои изображения в образце каталога!

А как насчет файлов photoshop или любых других файлов относительно вашего проекта, вы также помещаете их в корневой каталог (опять же с файлом .xcodeproj)?

+0

Я думаю, что это полностью зависит от вас, где вы должны его сохранить, а не для руководства или правила для структуры каталогов. – rishi

+0

Я знаю, что нет никаких «строгих» правил по этому поводу, мне интересно, как люди структурируют свои проекты, вот и все :) – allaire

+1

вы также можете обратиться к следующей теме форума iphone sdk - http://www.iphonedevsdk.com /forum/iphone-sdk-development/6457-xcode-folder-directories.html – rishi

ответ

25

Я предлагаю хранить все ваши файлы .m, .h и .xib в одной папке, потому что он упрощает локализацию строк при запуске ibtool для извлечения всех ссылок NSLocalizedString, а также облегчает перемещение файлов вокруг int виртуальная структура папок в Xcode при реорганизации вашего проекта.

Храните сторонние библиотеки или фреймворки в отдельной папке, чтобы не смешивать их со своим собственным кодом.

Внутри самого Xcode я организовываю эти файлы классов в отдельные виртуальные папки под названием Views, Controllers, Model и Nibs (и библиотеки для сторонних разработчиков). Если это большой проект, я разбиваю его на папки для каждого компонента, а затем разбиваю их на представления, контроллеры и т. Д., Но опять же это только виртуальные папки, а не физические.

Сохранение ресурсов в отдельной физической папке - это хорошая идея, чтобы упростить просмотр их на диске. Это может иметь смысл разделить их на изображения, звуки, xml и т. Д. В Xcode вы можете разбить их на виртуальные подпапки по компоненту или категории (интерфейс, контент и т. Д.), Но я бы не предложил делать это на диске как это затрудняет реорганизацию структуры папок по мере роста вашего проекта.

Это действительно хорошая идея, чтобы сохранить все ваши изображения в одной папке, потому что это позволяет избежать случайного отображения двух изображений с тем же именем. 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 в одна папка ". Это заставило бы меня орехов, не имеющих структуры в моем svn-репозитории! Но каждому свое. – chown

+0

Хорошо, если вы используете svn, вы знаете, как больно перемещать файлы между папками в проекте, который размещен в svn. Объем усилий, связанных с перемещением пользовательского подкласса UIButton, скажем, классов/somecomponent/views/в классы/shared/views как часть процесса рефакторинга без нарушения локальных ссылок и хранилища svn, избавит меня от рефакторинга и всего, что делает хорошую практику тяжелой работы - плохая идея imho. –

+0

Также обратите внимание на то, как создать файл localizable.strings с помощью ibtool. ibtool - это инструмент командной строки, который принимает путь к папке и генерирует один файл строк из всех классов внутри. Он не выполняет поиск вложенных папок, поэтому, если ваши классы не все в одной папке, это делает локализацию много запутанной. –

9

Я много думал об этом в последнее время; вот структура, я решил пойти с:

ProjectName 
ProjectName/Assets 
ProjectName/Assets/Images 
ProjectName/Frameworks 
ProjectName/Logic 
ProjectName/Logic/Models 
ProjectName/Presentation 
ProjectName/Presentation/ViewControllers 
ProjectName/Presentation/Views 

Я думаю, что это дает хорошую структуру для роста и обеспечивает разумный дом для большинства ничего. Конечно, добавьте дополнительные подпапки (например, Assets/Fonts) по мере необходимости. Для моего полного обоснования для структуры проверьте this blog post.

Я держу вещи как Icon.png и Default.png в корне проекта, так как Xcode кажется сдержанным, но в остальном вещи аккуратно организованы. Я сохраняю свои соответствующие файлы, .h и .xib, но я логически разбил контроллеры представлений на подпапки по функциям (например, , Settings).

Смежные вопросы