1

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

4

1 回答 1

5

分开来。

[obj objCType]返回一个包含那个的char *Objective-C编码NSValue

  • NSNumber是 的子类NSValue

@encode(BOOL)对 type 做同样的事情BOOL

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

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


我想你明白这是怎么回事:如果 NSValueobj的编码等于 type 的编码,则条件返回 true BOOL

于 2013-08-02T13:23:34.887 回答