NSUInteger index = [self.objects indexOfObject:obj]; if (index == NSNotFound) { // Success! Note: NSNotFound internally uses NSIntegerMax } if (index == NSUIntegerMax) { // Fails! }
为什么?我想由于indexOfObject而得到一个无符号值.所以,当然,我假设如果找不到该对象,它将返回NSUIntegerMax而不是NSIntegerMax.这是一个错误,还是对这种行为有合理的解释.
解决方法
也许NSNotFound可以在使用NSInteger的上下文中使用.如果有人将索引声明为NSInteger而不是NSUInteger,它也更安全.
至多,可以说NSNotFound被定义为NSIntegerMax很奇怪,但它肯定不是一个bug.