Speaking of packaging, a thing I hated in Xcode, which made me wish to be filled with nuclear fire, transformed into Godzilla, and stomp thru 1 Infinite Loop, was the package structure:
foo/ foo/ foo-Info.plist foo-Prefix.pch foo.entitlements all source, images, and config files in a single giant mess, regardless of "groups" foo.xcodeproj/ foo.xcodeproj/ project.pbxproj project.xcworkspace/ contents.xcworkspacedata xcshareddata/ foo.xccheckout xcuserdata/ mdh.xcuserdatad/ UserInterfaceState.xcuserstate WorkspaceSettings.xcsettings xcschemes/ xcschememanagement.plist xcuserdata/ mdh.xcuserdatad/ xcdebugger/ Breakpoints_v2.xcbkptlist xcschemes/ foo debug.xcscheme foo release.xcscheme xcschememanagement.plist fooTests/ more sources
Are you fucking kidding me?
Groups aren't folders, they're just keywords grouped together until Xcode decides to fuck you over and disorganize them. To fight the project dump dir, I'd make a group, then add a subfolder, edit the group to reference the folder, and then I could create files in their own nicely-organized subfolder. There is of course no automatic name sorting, because that's a developer convenience and Xcode hates developers.
Test code couldn't be in the same folder as the code it was testing. So you'd edit a file, then edit a test file WAY over in a different tree. Good luck knowing how much coverage you had.
I especially love how
foo.xcodeproj/project.xcworkspace/xcuserdata/ have duplicate structures for develop & run/debug modes, because obviously the runtime and debug teams are separate and hate each other.