Экземпляр NSString сообщает о своем классе как NSCFString
Моя цель здесь очень проста - я пытаюсь установить NSString
на некоторые тестовые данные, а затем вернуть класс, который должен быть NSString
. Здесь мой код:
NSString* stringer = [NSString stringWithFormat: @"Test"];
NSLog(@"%@", [stringer class]);
В журнале указано, что класс NSCFString
, а не NSString
. Что здесь происходит?
Ответы
Ответ 1
NSString - действительно контейнерный класс для различных типов строковых объектов. Как правило, конструктор NSString возвращает объект, который фактически имеет тип NSCFString, который представляет собой тонкую оболочку вокруг структуры Core Foundation CFString.
Ответ 2
NSString - кластер классов , а также другие типы Foundation, такие как NSNumber и NSArray:
Кластеры классов - это шаблон проектирования что основа Фонда широкое использование. Группа кластеров классов ряд частных, бетонных подклассы под публичным, абстрактным суперкласс. Группирование классов в этот способ упрощает публично видимая архитектура объектно-ориентированная структура без уменьшая его функциональное богатство. Кластеры классов основаны на Абстрактный шаблон дизайна Factoryобсуждается в "Cocoa шаблонах проектирования".