Ios 无法理解@encode和objCType

Ios 无法理解@encode和objCType,ios,objective-c,Ios,Objective C,我遇到了一个代码片段: if(strcmp([obj objCType],@encode(BOOL))==0)其中obj是一种NSNumber。 这里到底发生了什么事?别吵了 [obj objCType]返回一个字符*,其中包含该NSValue的Objective-C NSNumber是NSValue的子类 @encode(BOOL)对类型BOOL执行相同的操作 strcmp()比较两个字符串。如果字符串相等,则返回0 strcmp(…)==0如果与相等的字符串相比strcmp(),则返回t

我遇到了一个代码片段:
if(strcmp([obj objCType],@encode(BOOL))==0)
其中
obj
是一种
NSNumber
。 这里到底发生了什么事?

别吵了

[obj objCType]
返回一个
字符*
,其中包含该
NSValue的Objective-C

  • NSNumber
    NSValue
    的子类
@encode(BOOL)
对类型
BOOL
执行相同的操作

strcmp()
比较两个字符串。如果字符串相等,则返回
0

strcmp(…)==0
如果与相等的字符串相比
strcmp()
,则返回true


我想您看到了这一点:如果NSValue
obj
的编码与类型
BOOL
的编码相等,则条件返回true

[obj objCType]
返回一个
字符*
,其中包含该
NSValue的Objective-C

  • NSNumber
    NSValue
    的子类
@encode(BOOL)
对类型
BOOL
执行相同的操作

strcmp()
比较两个字符串。如果字符串相等,则返回
0

strcmp(…)==0
如果与相等的字符串相比
strcmp()
,则返回true


我想您看到了这一点:如果NSValue
obj
的编码与类型
BOOL
的编码相同,则条件返回true