在 xcode 中检测 iOS 版本 - 程序中出现意外的“@”

Detect iOS version in xcode - Unexpected '@' in program

我继承了 xcode(下方)中的一些代码,但收到 'Unexpected '@' in program' 错误报告。

我已经能够弄清楚这可能是因为原始代码是用 xcode >9.0 编写的,而我的版本(由于硬件限制)是 xcode 8.2.1

通过研究,我确定问题出在这部分代码上:

 if (@available(iOS 9.0, *)) {

我需要改成

if #available(iOS 9.0, *) {

但是如果我这样做,我就会得到以下错误

Expected '(' after 'if'

原来的一段代码是

if ([self.uploadProgress respondsToSelector:@selector(setResumingHandler:)]) {
    if (@available(iOS 9.0, *)) {
        [self.uploadProgress setResumingHandler:^{
            __typeof__(weakTask) strongTask = weakTask;
            [strongTask resume];
        }];
    } else {
        // Fallback on earlier versions
    }
}

这就是我尝试将其更改为

if ([self.uploadProgress respondsToSelector:@selector(setResumingHandler:)]) {
    if #available(iOS 9.0, *) {
        [self.uploadProgress setResumingHandler:^{
            __typeof__(weakTask) strongTask = weakTask;
            [strongTask resume];
        }];
    } else {
        // Fallback on earlier versions
    }
}

如有任何帮助,我们将不胜感激。

available(iOS 9.0, *) 在 swift 中用于 objective-c 你可以试试这个

 if (floor(NSFoundationVersionNumber) >= NSFoundationVersionNumber_iOS_9_x_Max)

#if defined(__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >=  __IPHONE_10_0
    // For iOS 10 display notification (sent via APNS)

    #endif