В этом случае вам не нужно беспокоиться о скорости или памяти. Не поддавайтесь искушению оптимизировать, прежде чем узнаете, что у вас есть проблема. Вы намного лучше справляетесь с читабельностью своего кода, даже если только вы его читаете. Хорошо разработанный код, который легче читать и обслуживать, будет содержать меньше ошибок, и его будет легче оптимизировать, если вы столкнетесь с проблемами со скоростью или памятью в будущем. Не стесняйтесь жертвовать несколькими байтами тут и там, если это облегчает чтение вашего кода.
В этом случае предлагаемое вами изменение, безусловно, является шагом в правильном направлении, поэтому, если хотите, сделайте это постепенное изменение.
Если вы чувствуете смелость и хотите сделать еще один шаг в правильном направлении, вы можете добавить переменную-член soundEffects к каждому нужному контроллеру, присвоить ей свойство с помощью @property (nonatomic, retain) и установить его свойство после создания каждого контроллера (в приложении делегата приложения: didFinishLaunchingWithOptions: и везде, где вы можете создавать эти контроллеры). Таким образом, вашим контроллерам даже не нужно знать, что делегат приложения существует. Эта «слабая связь» является достоинством объектно-ориентированного проектирования, которое минимизирует зависимости между вашими объектами, облегчая их обслуживание.