Экземпляр NSString сообщает о своем классе как NSCFString - PullRequest
20 голосов
/ 26 декабря 2008

Моя цель здесь очень проста - я пытаюсь установить NSString для некоторых тестовых данных, затем вернуть класс, который должен быть NSString. Вот мой код:

NSString* stringer = [NSString stringWithFormat: @"Test"];
NSLog(@"%@", [stringer class]);

В журнале сказано, что класс NSCFString, а не NSString. Что здесь происходит?

Ответы [ 2 ]

30 голосов
/ 26 декабря 2008

NSString действительно контейнерный класс для различных типов строковых объектов. Обычно конструктор NSString возвращает объект, который на самом деле имеет тип NSCFString, который является тонкой оболочкой для структуры Core Foundation CFString.

25 голосов
/ 26 декабря 2008

NSString - кластер класса , наряду с другими типами Foundation, такими как NSNumber и NSArray:

Кластеры классов - это шаблон проектирования что основа фонда делает широкое использование. Группа кластеров классов ряд частных, бетонных подклассы под публикой, аннотация суперкласс. Группировка занятий по этот способ публично упрощает видимая архитектура объектно-ориентированная структура без уменьшая его функциональное богатство. Кластеры классов основаны на Абстрактный шаблон дизайна фабрики обсуждается в разделе «Шаблоны проектирования какао».

...