What are the common use cases for __IPHONE_OS_VERSION_MAX_ALLOWED?

后端 未结 2 452
感动是毒
感动是毒 2020-12-13 10:38

What are the situations in which you would use the __IPHONE_OS_VERSION_MAX_ALLOWED check? What about __IPHONE_OS_VERSION_MIN_REQUIRED?

2条回答
  •  [愿得一人]
    2020-12-13 11:14

    a practical implementation/example of using instancesRespondToSelector:, expanding on @Nick Lockwood's anwser:

    +(BOOL) testIsHeaderInConnectData:(NSData *) connectData {
        static NSString *headString = nil;
        static NSData *headData = nil;
        static BOOL rangeCheckOk = NO;
        static BOOL rangeCheckTestComplete = NO;
        if (!rangeCheckTestComplete) {
            rangeCheckOk = [NSData instancesRespondToSelector:@selector(rangeOfData:options:range:)]; 
            headString = @"HEAD ";
            headData = (rangeCheckOk?[[NSData alloc] initWithBytes:headString.UTF8String length:headString.length]:nil);
            headString = (rangeCheckOk?nil:[[NSString alloc ]initWithString:headString]);
            rangeCheckTestComplete = YES;
        }
    
        NSInteger testLength = connectData.length;
        BOOL isHeader = testLength > 5;
        if (isHeader) {
            testLength = (testLength < 128?testLength:128);
            if (rangeCheckOk) {
                 isHeader = [connectData rangeOfData:headData options:0 range:(NSRange){0,testLength}].location!=NSNotFound;
            } else {
                NSString *headStart = [[NSString alloc] initWithBytes:connectData.bytes length:testLength encoding:NSUTF8StringEncoding];
                isHeader = [headStart rangeOfString:headString].location!=NSNotFound;
                [headStart release];
            }
        }
        return isHeader;
    }
    

提交回复
热议问题