如果 #available(iOS 9, *) 不工作

if #available(iOS 9, *) Not Working

我发现我的代码中有一行不喜欢在 iOS8 上成为 运行,但有一种方法可以在 iOS8 上使用不同的逻辑执行相同的任务,那不喜欢 iOS9。

我已经使用 if #available(iOS 9, *) 在 iOS9 上执行我需要的代码,在 iOS8 上执行代码。但是,当 运行ning 调用函数几次后,iOS9 设备 运行 执行了它不应该执行的代码并崩溃了。我是否错过了设置 if #available(iOS 9, *) 的步骤?

代码如下

if #available(iOS 9, *) {
    if(self.otherChats[loc].last?.timestamp! != messageObj.timestamp!){
        self.otherChats[loc].append(messageObj)
        self.Notfication.postNotificationName(_Chat.Notification.DidGetMessage, object: nil)
    }
} else {
    self.otherChats[loc].append(messageObj)
    self.Notfication.postNotificationName(_Chat.Notification.DidGetMessage, object: nil)
}
   let systemVersion = UIDevice.currentDevice().systemVersion        
    if((Double)(systemVersion) > 9.0)
    {
        if(self.otherChats[loc].last?.timestamp! != messageObj.timestamp!){
            self.otherChats[loc].append(messageObj)
            self.Notfication.postNotificationName(_Chat.Notification.DidGetMessage, object: nil)
        }
    }
    else
    {
        self.otherChats[loc].append(messageObj)
        self.Notfication.postNotificationName(_Chat.Notification.DidGetMessage, object: nil)
    }

available 检查应该有效。由于要排除的代码在两种情况下都是相等的(除了 if),问题很可能是 if 条件(self.otherChats[loc].last?.timestamp! != messageObj.timestamp!)是 true,当你认为它应该是 false.

尝试将日志添加到两个 #available 块,您很可能会看到,第二个块(iOS 8 块)永远不会在 iOS 上执行9 台设备。