Это не я, кого вы спрашивали о примере @Besi, но я хотел бы объяснить, почему изменение BundleId полезно по крайней мере для меня.
Когда у меня разные требования к «Разработке», «Ad Hoc», «App Store», например, мне нужно отправлять Push-уведомления, поэтому push-сертификат будет отличаться в зависимости от версии.
В этом случае я могу создать 3 разные схемы XCode и, в зависимости от выбранной схемы, при компиляции идентификатора пакета будет меняться, что приведет к разным версиям.
Добавьте к этому тот факт, что вы можете использовать свой xcconfig для выбора «Идентификации кода» и практически всех настроек сборки, которые вы можете себе представить. Этот способ более корректен, чем использование разных целей для каждой версии, с разными файлами plist и настройками сборки, поскольку вы избегаете дублирования и можете настроить способ, которым параметры должны переопределять друг друга.
Извините, если это очень запутанно, я попытался ответить на оригинальный вопрос в процессе.