NSNotFound
的这个in-Xcode文档非常令人困惑:
它说"适用于iOS 2.0到8.4和#34;和"可用性:iOS 8.1到8.0"。所以... 8.0之前可用吗?还是9.0+?此外,这里发生了什么,如果是的话?
答案 0 :(得分:7)
在此处插入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
的内存位置是否为NULL:
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wtautological-compare"
BOOL found = (&NSNotFound != NULL);
#pragma clang diagnostic pop
if (found) {
NSLog(@"meh");
}
答案 1 :(得分:1)