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

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

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

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

2 ответа

Решение

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

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

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

Другие вопросы по тегам