What is the availability of NSNotFound?

前端 未结 2 514
情书的邮戳
情书的邮戳 2020-12-19 05:49

This in-Xcode documentation for NSNotFound is quite confusing:

It says \"Available in iOS 2.0 through 8.4\" and \"Availability: iOS 8.1 to 8.0\

2条回答
  •  猫巷女王i
    2020-12-19 06:19

    Insert availabilityOfNSNotFound == NSNotFound joke here.


    At some point when Apple was pushing mandatory 64-bit device support (iOS 8.4 SDK?), the declaration of NSNotFound was changed from:

    enum {NSNotFound = NSIntegerMax};
    

    to

    static const NSInteger NSNotFound = NSIntegerMax;
    

    You can verify this in .

    The documentation was never changed, so the availability of the enum NSNotFound is no longer in the SDK. But as of iOS 9 and above, the static const NSInteger NSNotFound is available.

    Although I cannot answer the true availability of NSNotFound since I don't work for Apple (as a developer I think it's safe to use in all iOS versions since 2.0, or else a lot of Foundation classes would break since they can return NSNotFound), you can check to see if the memory location for NSNotFound is NULL:

    #pragma clang diagnostic push
    #pragma clang diagnostic ignored "-Wtautological-compare"
    BOOL found = (&NSNotFound != NULL);
    #pragma clang diagnostic pop
    if (found) {
        NSLog(@"meh");
    }
    

提交回复
热议问题