Возможно, вы ошиблись синглтоном в первой попытке. Управление памятью на симуляторе работает так же, как на устройстве, по крайней мере, в принципе. На практике есть некоторые различия из-за проблем с синхронизацией или из-за того, что симулятор имеет много памяти и не будет отправлять вам предупреждения о памяти. Но эти различия не повлияют на правильно написанный синглтон.
Связанный одноэлементный код выглядит хорошо на скиме. По моему мнению, вам лучше всего полностью избавиться от синглетонов и подключить ваше приложение с помощью Interface Builder или внедрения зависимостей.