Я уверен, что, как предположил Клемахиу, вы действительно видите чрезмерно удержанные объекты - вы думаете, что освободили их, но они все еще сохраняются.
Одна быстрая проверка работоспособности для этого - установить точки останова в dealloc и посмотреть, действительно ли классы, которые вы ожидаете освободить, являются.
Вы также можете использовать инструмент отслеживания памяти (но не утечки), чтобы увидеть, какая память еще есть - просто убедитесь, что вы выбрали опцию «создан и все еще жив», чтобы проверить, какие объекты все еще существуют.