NSNumber *x = [NSNumber numberWithBool:NO];
NSNumber *y = [NSNumber numberWithUnsignedInt:0];
assert([x isEqual:y]);
assert(x==y);
Run Code Online (Sandbox Code Playgroud)
第一个断言通过,第二个断言失败,为什么?因为他们的'objCType'不同?isEqual:和==运算符的定义有什么区别?
为什么我这样做:我必须在某些后端存储一个布尔值,其API需要NSNumber而不是BOOL,所以我必须在存储它们之前将所有BOOL转换为NSNumber.我也需要转换反之亦然.
objective-c ×1