Determinar si la clase especificada es igual a una determinada clase
//método uno
[numberObject isKindOfClass:NSClassFromString(@"__NSCFBoolean")];
//Método dos
NSNumber *booleanNumber = @YES;
const char *typeEncoding = [booleanNumber objCType];
NSString *typeString = [NSString stringWithUTF8String:typeEncoding];
//Método 3
[isDebugMode isEqual:[NSNumber numberWithBool:YES]] ? YES : NO;
Determinar por cadena codificada por tipo
El tipo __NSCFBoolean es una subclase privada de NSNumber. No hay forma de obtener la cadena de codificación de tipo directamente a través de @encode (BOOL).
Solución: @YES significa que es el tipo __NSCFBoolean en el tipo NSNumber
isDebugMode.objCType == @YES.objCType
objcType es un método único de NSNumber para obtener cadenas codificadas por tipo.
Para obtener información sobre la lógica de referencia, consulte isPropertyValueTypeBOOL.
La cadena codificada de tipo NSNumber obtenida actualmente es i __NSCFBoolean es c (pero creo que la definición de macro solo debería estar en arm64) @encode(BOOL) es B
[propertyValue objCType] Obtiene la cadena de codificación de tipo del objeto propertyValue pero objCType solo está disponible en NSNumber