Я собираюсь взять то, что, как вы думаете, вы пытаетесь достичь здесь, и предложить альтернативный подход. Вы хотите, чтобы в вашем приложении были настройки (предполагаемые из «меню настроек»), позволяющие пользователю устанавливать что-то вроде того, будет ли ваше приложение воспроизводить фоновую музыку. (Может быть не совсем точно, это только для пояснения).
Как правило, в хорошо спроектированном приложении поток управляется данными, причем пользовательский интерфейс отражает состояние модели данных, а контроллеры координируют два уровня. Что вы предлагаете, так это чтобы ваше приложение воспроизводило музыку в зависимости от состояния пользовательского интерфейса, который не поддерживается какой-либо моделью данных. Это исключает уровень модели и, как вы заметили, может привести к неловким попыткам обмена информацией между пользовательским интерфейсом различных контроллеров.
Такие вещи, как настройки приложения, обычно хранятся в изящном файле .plist, который управляется с помощью класса NSUserDefaults. Это было бы отличным местом для отслеживания уровня данных ваших предпочтений. В этой ситуации UISwitch будет представлять состояние флага в файле настроек, а изменение значения переключателя изменит значение в файле. В любом другом месте вашего приложения, где вам нужно знать, установлен ли флаг воспроизведения звука, вы ссылаетесь на информацию о модели данных, а не на пользовательский интерфейс. Это отделяет контроллеры представления друг от друга, что хорошо.