организация каталогов проекта iOS - PullRequest
24 голосов
/ 15 января 2012

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

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

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

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

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

Ответы [ 2 ]

26 голосов
/ 15 января 2012

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

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

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

Хранение ресурсов в отдельной физической папкехорошая идея, чтобы было проще просматривать их на диске.Возможно, имеет смысл разделить их на изображения, звуки, 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];
9 голосов
/ 08 апреля 2013

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...