Вы не должны освобождать свойства других объектов. Позвольте синглтону управлять самим словарем, и ваш дизайн будет проще.
Что касается проблемы, когда Какао говорит, что вы переиздаваете, даже если «количество удержаний равно 1», есть только один хороший совет, который вы когда-либо получите по поводу сохранения количества:
Не смотри на них!
Они вводят в заблуждение, и фактическое управление памятью объекта зависит от всевозможных сил, о которых подсчет хранения не может вам сказать.
В этом случае вы проверяете счет сохранения, чтобы увидеть, существует ли объект по-прежнему. Но не существует такой вещи, как объект с счетом сохранения 0 - когда вы отпускаете объект с счетом хранения 1, он освобождается. Любой результат, который вы получите от освобожденного объекта, является мусором, поэтому вы никогда не сможете запросить у объекта его счетчик сохранения и вернуть 0 - объекты с счетом хранения 0 буквально не существуют.