Подтвердить что ты не робот

Экземпляр NSString сообщает о своем классе как NSCFString

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

NSString - кластер классов , а также другие типы Foundation, такие как NSNumber и NSArray:

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