Я предлагаю хранить все ваши файлы .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];