Respuestas a preguntas de OC

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

Supongo que te gusta

Origin blog.csdn.net/qq_43535469/article/details/131012927
Recomendado
Clasificación