objective-c cocoa class nsstring class-cluster

objective c - Instancia de NSString informa su clase como NSCFString



objective-c cocoa (2)

NSString es realmente una clase de contenedor para diferentes tipos de objetos de cadena. En general, un constructor NSString devuelve un objeto que es realmente del tipo NSCFString, que es un envoltorio delgado alrededor de la estructura CFString de Core Foundation.

Mi objetivo aquí es realmente simple: estoy intentando establecer un NSString en algunos datos de prueba, y luego devolver la clase, que debería ser NSString . Aquí está mi código:

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

El registro dice que la clase es NSCFString , no NSString . ¿Que está pasando aqui?


NSString es un clúster de clase , junto con otros tipos de Foundation como NSNumber y NSArray:

Los clústeres de clase son un patrón de diseño que el marco de Foundation hace un uso extensivo. Los grupos de clases agrupan una cantidad de subclases privadas y concretas bajo una superclase pública y abstracta. La agrupación de clases de esta manera simplifica la arquitectura públicamente visible de un marco orientado a objetos sin reducir su riqueza funcional. Los clústeres de clases se basan en el patrón de diseño de Abstract Factory que se analiza en "Cocoa Design Patterns".