无法理解@encode和objCType

时间:2013-08-02 12:58:55

标签: ios objective-c

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

1 个答案:

答案 0 :(得分:5)

分手。

[obj objCType]会返回char *,其中包含NSValue的Objective-C encoding

  • NSNumberNSValue
  • 的子类

@encode(BOOL)对类型BOOL执行相同的操作。

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

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

strcmp()返回true。


我想您会看到这种情况:如果NSValue obj的编码等于BOOL类型的编码,则条件返回true。