OC-问题答案

判断指定类是否等于某个类

//方法一

[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才有

猜你喜欢

转载自blog.csdn.net/qq_43535469/article/details/131012927
今日推荐