我在我的代码中发现了一条不喜欢在iOS8上运行的行,但有一种方法可以在iOS8上使用不同的逻辑执行相同的任务,这与iOS9不同。
我使用if #available(iOS 9, *)
来执行iOS9上需要的代码和iOS8上的代码。但是,在运行时,在对函数进行几次调用之后,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)
}
答案 0 :(得分:2)
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)
}
答案 1 :(得分:0)
available
检查应该有效。由于要处理的代码在两种情况下都相同(除了if
),问题很可能是if
条件(self.otherChats[loc].last?.timestamp! != messageObj.timestamp!
)是true
,如果你认为它应该是false
。
尝试向两个#available
块添加日志,并且很可能您会看到,第二个块(iOS 8版)从未在iOS 9设备上执行。