Практическое правило Objective-C: если ваш код выполняет выделение / копирование / сохранение для инициализации объекта, вам необходимо освободить его, поскольку вы являетесь владельцем.Если вы не выполняете alloc / copy / retain для инициализации объекта (например, с помощью метода для получения экземпляра), то вы не являетесь владельцем и не должны освобождать объект.
В этом случае вы не создали строку, поэтому не несете ответственности за ее освобождение.Вам не нужно беспокоиться о том, как строка была инициализирована при ее создании и добавлении в NSDictionary (если только вы сами не создаете и не добавляете ее в словарь).С большинством объектов коллекции они берут на себя ответственность за объекты, которые к ним добавляются, и, таким образом, они несут ответственность за освобождение объектов под свою опеку.