//方法一
[numberObject isKindOfClass:NSClassFromString(@"__NSCFBoolean")];
//方法二
NSNumber *booleanNumber = @YES;
const char *typeEncoding = [booleanNumber objCType];
NSString *typeString = [NSString stringWithUTF8String:typeEncoding];
//方法三
[isDebugMode isEqual:[NSNumber numberWithBool:YES]] ? YES : NO;
通过类型编码字符串判断
__NSCFBoolean 类型是 NSNumber 的私有子类 没办法直接通过@encode(BOOL)方式去获取 类型编码字符串
解决方法 :@YES就表示是NSNumber类型里面的__NSCFBoolean类型
isDebugMode.objCType == @YES.objCType
objcType是NSNumber独有的方法 获取类型编码字符串
参考逻辑可看isPropertyValueTypeBOOL
目前得到的NSNumber类型的编码字符串是 i __NSCFBoolean的是 c( 但是我看宏定义应该只是在 arm64)@encode(BOOL)的是B
[propertyValue objCType]获取对象propertyValue的类型编码字符串 但是objCType只有NSNumber才有