NSNotFound
的 Xcode 文档非常困惑:
上面写着“在 iOS 2.0 到 8.4 中可用”和“可用性:iOS 8.1 到 8.0”。所以... 8.0之前可以用吗?还是9.0+?另外,如果是的话,这是怎么回事?
最佳答案
插入 availabilityOfNSNotFound == NSNotFound
开个玩笑。
在 Apple 插入强制性 64 位设备支持(iOS 8.4 SDK?)的某个时刻,NSNotFound
的声明更改自:
enum {NSNotFound = NSIntegerMax};
到
static const NSInteger NSNotFound = NSIntegerMax;
您可以在 <Foundation/NSObjCRuntime.h>
中验证这一点.
文档从未更改,因此 enum
的可用性NSNotFound
不再在 SDK 中。但对于 iOS 9 及更高版本,static const NSInteger
NSNotFound
可用。
虽然我无法回答 NSNotFound
的真实可用性因为我不为 Apple 工作(作为开发人员,我认为在 2.0 之后的所有 iOS 版本中使用是安全的,否则很多基础类会中断,因为它们可以返回 NSNotFound
),您可以检查是否NSNotFound
的内存位置为空:
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wtautological-compare"
BOOL found = (&NSNotFound != NULL);
#pragma clang diagnostic pop
if (found) {
NSLog(@"meh");
}
关于ios - NSNotFound 的可用性如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33419473/