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